BBB » 02 апр 2008, 10:47
ROBOT_rus писал(а):Теперь компилятор не ругается,но всёравно лажа какаято))
..........
Каждый раз выпадает число 71 (все разы...не меняется блин)
"А кто тебе сказал, что оно стихийное? Может, это я, когда кран тебе ставил, то на две крутки его недокрутил и на две винтки недовинтил." ((c) А.И.Райкин)
Я в том смысле, что это не "лажа", а "так и должно быть".
1) Непонятен смысл цикла, в котором 10 раз выводится ОДНО И ТО ЖЕ ЧИСЛО. Вызов rand() происходит лишь однажды.
2) Но если бы вызов rand() делался бы несколько раз, то при каждом новом запуске программа выдавала бы ОДИНАКОВУЮ серию (последовательность) чисел. Потому что инициализация генератора
псевдостучайных чисел происходила бы каждый раз одним и тем же числом.
И (обратите внимание!) параметр ф-ии
srand - это не верхняя граница диапазона возвращаемых чисел, а число-инициализатор последовательности.
Смотрите описание ф-ии
srand в MSDN:
http://msdn2.microsoft.com/en-us/library/f0d4wb4t.aspx
Т.е. для получения каждый раз новой последовательности, надо передавать параметром в
srand какое-то новое число.
А диапазон возвращаемых чисел ф-ей
rand - от 0 до RAND_MAX (32767):
http://msdn2.microsoft.com/en-us/library/398ax69y.aspx
(Там внизу страницы, к слову, неплохой пример есть, в частности, как получить число в нужном диапазоне, как инициализировать srand новым ["случайным"] числом:
// Seed the random-number generator with the current time so that
// the numbers will be different every time we run.
srand( (unsigned)time( NULL ) );
)
[quote="ROBOT_rus"]Теперь компилятор не ругается,но всёравно лажа какаято))
..........
Каждый раз выпадает число 71 (все разы...не меняется блин)[/quote] [i]"А кто тебе сказал, что оно стихийное? Может, это я, когда кран тебе ставил, то на две крутки его недокрутил и на две винтки недовинтил."[/i] ((c) А.И.Райкин)
Я в том смысле, что это не "лажа", а "так и должно быть".
1) Непонятен смысл цикла, в котором 10 раз выводится ОДНО И ТО ЖЕ ЧИСЛО. Вызов rand() происходит лишь однажды.
2) Но если бы вызов rand() делался бы несколько раз, то при каждом новом запуске программа выдавала бы ОДИНАКОВУЮ серию (последовательность) чисел. Потому что инициализация генератора [u]псевдостучайных[/u] чисел происходила бы каждый раз одним и тем же числом.
И (обратите внимание!) параметр ф-ии [b]srand[/b] - это не верхняя граница диапазона возвращаемых чисел, а число-инициализатор последовательности.
Смотрите описание ф-ии [b]srand[/b] в MSDN:
[url]http://msdn2.microsoft.com/en-us/library/f0d4wb4t.aspx[/url]
Т.е. для получения каждый раз новой последовательности, надо передавать параметром в [b]srand[/b] какое-то новое число.
А диапазон возвращаемых чисел ф-ей [b]rand[/b] - от 0 до RAND_MAX (32767):
[url]http://msdn2.microsoft.com/en-us/library/398ax69y.aspx[/url]
(Там внизу страницы, к слову, неплохой пример есть, в частности, как получить число в нужном диапазоне, как инициализировать srand новым ["случайным"] числом:
[i]// Seed the random-number generator with the current time so that
// the numbers will be different every time we run.
srand( (unsigned)time( NULL ) );[/i]
)