Всегда повторяющиеся числа, заданные rand () - PullRequest
1 голос
/ 01 февраля 2011

Я использую rand () во взгляде, и он всегда дает мне одни и те же значения несколько раз подряд. Я пытался использовать srand (время (NULL)) перед циклом, но это не помогает ...

1 Ответ

4 голосов
/ 01 февраля 2011

Обычно единственная причина, по которой вы получаете повторяющиеся числа, заключается в том, что вы используете srand в цикле с тем же начальным значением (а time(0) даст одинаковое значение в плотной петле).

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

Например, rand() / 100000 может быть не очень хорошей вещью, если алгоритм склоняется к изменениям в нижнем конце возвращаемого значения, поскольку последовательность rand() из 100000, 164534, 186410, 199999 даст вам 1, 1, 1, 1 (rand() % 100000 вполне может быть лучшим выбором в этом случае, если вы цените изменения между последовательным номером).

Конечно, не видя ваш реальный код, такие предположения, вероятно, лучшее, что мы можем сделать. Ваш лучший выбор, как и в большинстве отчетов о проблемах, это предоставить небольшой полный образец, который показывает проблему.

...