Консультация № 138404
29.05.2008, 01:37
0.00 руб.
0 1 1
Здравствуйте. Генерирую случ. число следующим образом:
srand((unsigned)time(NULL));
ch=(((double)rand()*0xFFFFFFFF);

ch - переменная типа int

Две копии этой программы на разных компах, запущенные вручную, выдают в результате одно и то же число каждый раз. Как бороться?

Обсуждение

Неизвестный
29.05.2008, 02:57
общий
это ответ
Здравствуйте, Blackie!
Это происходит из-за приведения типов и rand здесь ни при чем. Попробуйте взять любое число типа double отличное от нуля и поставьте его вместо rand - результат будет тем же. По стандарту размер типа int - 4 байта (32 бита) при этом один бит отводится на знак, если тип знаковый. Интервал int - (–2147483648; 2147483647)
Тип результата выражения ((double)rand()*0xFFFFFFFF); - double, причем превышающий предел типа int. Соответственно после приведения типов возникнет число –2147483648.
Форма ответа