Случайность Python: что произойдет, если я не буду использовать seed (someValue)?

StackOverflow https://stackoverflow.com/questions/817705

  •  03-07-2019
  •  | 
  •  

Вопрос

a) В этом случае генератор случайных чисел использует системные часы (производящие замену семян) при каждом запуске?

б) Используется ли начальное число для генерации псевдослучайных значений эксповариата (лямбда)?

Это было полезно?

Решение

" Используй источник, Люк! " ... ;-). Изучение https://svn.python.org/projects/python/trunk /Lib/random.py быстро вас успокоит; -).

Что происходит, когда начальное число не задано (это случай "i is None"):

if a is None:
    try:
        a = long(_hexlify(_urandom(16)), 16)
    except NotImplementedError:
        import time
        a = long(time.time() * 256) # use fractional seconds

и эксповариат:

random = self.random
u = random()
while u <= 1e-7:
    u = random()
return -_log(u)/lambd

, очевидно, использует тот же базовый генератор случайных чисел, что и любой другой метод, и поэтому идентично зависит от заполнения или его отсутствия (действительно, как еще это было бы сделано? -)

Другие советы

a) Обычно он использует системные часы, часы в некоторых системах могут иметь только мс точность, и поэтому очень быстрое начальное заполнение может привести к тому же значению.

  

seed (self, a = None)       Инициализируйте внутреннее состояние из объекта hashable.

None or no argument seeds from current time or from an operating
system specific randomness source if available.
     

http://pydoc.org/2.5.1/random.html# Случайные-семенные

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

  

используется текущее системное время; текущее системное время также используется для инициализации генератора при первом импорте модуля. Если операционная система предоставляет источники случайности, они используются вместо системного времени (подробности о доступности см. В функции os.urandom ()).

Случайные документы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top