2017-02-17 5 views
0

В петле достаточно установить семя один раз, чтобы получить последовательность случайных чисел. Как функция rand генерирует множество случайных чисел на основе только одного семени?Как rand() генерирует последовательность случайных чисел из одного семени?

+0

связанный: [Как работает rand()? Есть ли определенные тенденции? Есть ли что-то лучшее в использовании?] (Http://stackoverflow.com/questions/3539398/how-does-rand-work-does-it-have-certain-tendencies-is-there-something-better) – user4581301

+1

Как сделать Фибоначчи генерируют множество чисел, начиная с 1? Существует простое правило, которое ведет от одного элемента в последовательности к следующему; и в случае «rand» он таков, что числа * выглядят * довольно случайными (как для случайного наблюдателя, так и в соответствии с некоторыми базовыми статистическими тестами). –

+0

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

ответ

2

Все, что вам нужно - это алгоритм превращения одного числа в два числа. Один номер становится вашим следующим выходом, другой становится вашим следующим семенем. Такие алгоритмы довольно просты. Например, вы можете умножить число на два разных простых числа, а затем уменьшить каждый модем 65536. Это будет производить два выхода с одного входа.

Альтернативный способ еще проще:

1) переставляют семян путем умножения его на один номер и добавление второго числа. (Например, seed = seed * 214013 + 2531011;.)

2) Выведите только часть нового семени. (Например, return (seed >> 16) &0x7ffff;.)

0

На самом деле это номера Pseudorandom, цифры кажутся случайными, но не являются детерминированными, поскольку они могут быть предсказаны алгоритмом. Поистине случайное число невозможно предсказать. Использование одного и того же семени будет производить одну и ту же последовательность. Стандарт определяет и алгоритм, но используемый actual algorithm будет зависеть от реализации.

Смежные вопросы