2 вопроса по алгоритмам случайных чисел на С++

zrab

есть функция
rand
и константа
RAND_MAX

когда мне надо найти случайное число от 0 до n, я пишу выражение
(intn*(double)rand / RAND_MAX)

затем записываю эти числа в соответствующий вектор. При дебаге программы обнаруживаю, что вектор принимает все время одни и те же значения. Итак, вопросы:
1) в чем здесь дело?
2) подскажите какой-нибудь другой алгоритм (точнее, функцию при котором вектор от дебаженья к дебаженью принимал бы разные значения. (вроде, есть алгоритмы, ориентирующиеся на процессорное время и др. алгоритмы. Время работы не принципиально)

kokoc88

в чем здесь дело?
В srand

Dasar

при старте программы инициализируй rand каким-нибудь случайным числом, например, временем

srand( (unsigned)time( NULL ) );

istran

Еще одна проблема - если у тебя число n > RAND_MAX,
то генериться будут не все целые числа из [0,n], а только
некоторое их подмножество, мощность которого не превышает RAND_MAX.

bleyman

Причём в вижуалстудии RAND_MAX == 65536, так что это вполне может произойти на практике.
Оставить комментарий
Имя или ник:
Комментарий: