Python: случайное время в системе

В python и при условии, что я нахожусь в системе с случайным генератором семян, как мне получить random.seed(), чтобы вместо этого использовать системное время? (Как будто /dev/urandom не существует)

Ответы

Ответ 1

import random
from datetime import datetime
random.seed(datetime.now())

Ответ 2

вы можете сделать

import random
import time
random.seed(time.time())

Ответ 3

Знаете ли вы эту библиотеку: PyRandLib? См:

https://schmouk.github.io/PyRandLib/ to easily download archives versions, and
https://github.com/schmouk/PyRandLib to get access to the code.

Эта библиотека содержит множество лучших в своем классе генераторов псевдослучайных чисел, в то же время действуя так же, как и встроенная в Python библиотека, случайная (просто un-zip или un-tar загруженный архив в разделе "Lib/site-packages/'подкаталога вашего каталога Python).

Из кода и из модуля "fastrand32.py" вы получите более сложный способ подачи случайных данных с перетасованной версией текущего времени. Для вашей цели это станет следующим:

import time
import random

t = int( time.time() * 1000.0 )
random.seed( ((t & 0xff000000) >> 24) +
             ((t & 0x00ff0000) >>  8) +
             ((t & 0x0000ff00) <<  8) +
             ((t & 0x000000ff) << 24)   )

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