Алгоритм генерации псевдослучайных чисел серии, воспроизводимой с учетом начального начального числа - PullRequest
1 голос
/ 03 мая 2011

Я должен написать легкий алгоритм для генерации псевдослучайных серий бесконечных чисел, сильно зависящий от начального начального числа.

В питоне это должно быть похоже на

seed = 3345                 // Common number
generator = numgen(seed)
while True:
    generator.getNext()     // With the same seed it produce same numbers

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

1 Ответ

9 голосов
/ 03 мая 2011

С учетом заданных требований вы можете перейти на постоянную серию

generator = itertools.repeat(seed)

Это

  • легкий
  • не обязательно случайный
  • сильно зависит от исходного семени
  • производит ту же серию даже на другой машине

Редактировать : Чтобы сделать это реальным ответом, вот как использовать Mersenne Twister из Python для генерации серии случайных чисел:

seed = 3345
maximum = 1000000
generator = random.Random(seed)
while True:
    print generator.random(maximum)

Создание собственного экземпляра random.Random гарантирует, что никакие вызовы генератора случайных чисел из другого места не будут мешать вашему случайному состоянию.

...