Алгоритм генерации псевдослучайных чисел серии, воспроизводимой с учетом начального начального числа

1

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

В python это должно быть как

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

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

  • 1
    Какие-либо дополнительные требования? В противном случае, я бы предложил itertools.count ...
  • 2
    Если ваш бесконечный ряд не должен быть случайным, почему бы не использовать что-то тупо простое, например, +1? (если начальное число равно 5, то ряд равен 5, 6, 7, ...) - или любая другая простая арифметическая функция в этом отношении?
Показать ещё 7 комментариев
Теги:
algorithm
generator
numbers
series

1 ответ

9
Лучший ответ

При заданных требованиях вы можете перейти к постоянной серии

generator = itertools.repeat(seed)

Это

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

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

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

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

  • 0
    +1 за самую очевидную идею :)
  • 0
    Повторение одного и того же номера недостаточно. Мне нужно какое-то изменение в генерации чисел.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню