2012-10-02 4 views
4

Я знаю, как установить случайное зерно в питонаЕсть ли способ прочитать случайное семя в python?

random.seed([x])

После того, как семя установлено, есть ли способ, чтобы прочитать его обратно и выяснить, какое значение было передано семени функции()?

+1

1. Согласно документу python использует системное время в качестве семени, если параметр не задан. 2. В качестве обходного пути вы можете использовать getstate и setstate – zenpoy

ответ

4

Хотя базовый алгоритм для Python's Random (Mersenne Twister) является детерминированным, семя не хранится нигде в пространстве памяти реализации. При необходимости абонент должен хранить семена.

http://docs.python.org/library/random.html#module-random

Для получения дополнительной информации о реализации языка Python (или переопределить его собственного семени, хранящей случайный класс) см:

http://hg.python.org/cpython/file/0b650272f58f/Lib/random.py

и

http://hg.python.org/cpython/file/0b650272f58f/Python/random.c

+0

Спасибо, что подтвердили, что он не хранится. Я буду хранить его где-то сам. – Plazgoth

3

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

Существует способ сохранить текущее состояние! Случайный модуль основан на генераторе псевдослучайных чисел Mersenne Twister, и он реализован в C (с модулем расширения). Вы можете сделать это:

import random 
r = random.Random() 
# Use the r object to generate numbers 
# ... 
curstate = r.__getstate__() 
# Use it even more.. 
# 
r.__setstate__(curstate) # Go back to previous state 

Другими словами, random.random() объекты могут быть маринованные, и вы можете использовать маринованные объекты (или __getstate__/__setstate__ методы непосредственно), чтобы вернуться к предыдущему состоянию.

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

  • Нет связанных вопросов^_^