не получить случайные значения даже с srand (время (NULL)) - PullRequest
0 голосов
/ 30 января 2019

Даже после включения srand(time(NULL)) в начале моей функции (функция вызывается только один раз в main), я получаю одно и то же случайное значение для r1 каждый раз, когда я запускаю программу.r2 и r3 получают случайные значения в порядке, но мне нужны случайные десятичные значения между 0.1 и 10.0, так что не так со строкой, содержащей r1?

void randNums(float &r1, float &r2, float &r3) {

   srand(time(NULL));

   r1 = (10 * (rand())/ (float)RAND_MAX);
   r2 = 1 + (rand() % 10);
   r3 = 1 + (rand() % 10);

}

1 Ответ

0 голосов
/ 30 января 2019

Я только что удалил строку srand и использовал функцию, чтобы распечатать ее пару раз, и она генерировала случайные числа.Когда я использовал ваш код для генерации случайных чисел, он, очевидно, отображал те же 3 значения случайных чисел для r1, r2 и r3, независимо от того, сколько раз я его запускал.Я думаю, что то, что сказал Мукин Дак, было правдой.Это может быть из-за переполнения кода 10 * rand ().Единственным недостатком этого является то, что если вы перезапустите свой код, он будет генерировать те же случайные числа, что и в прошлом сеансе.

...