Python:随机系统时间种子

Aca*_*ile 26 python random time

在python中,假设我在一个具有随机种子生成器的系统上,我如何让random.seed()代替使用系统时间?(好像/ dev/urandom不存在)

Qui*_*int 43

import random
from datetime import datetime
random.seed(datetime.now())
Run Code Online (Sandbox Code Playgroud)


Eli*_*sha 14

你可以做

import random
import time
random.seed(time.time())
Run Code Online (Sandbox Code Playgroud)


小智 8

你知道这个库:PyRandLib吗?看:

https://schmouk.github.io/PyRandLib/ to easily download archives versions, and
https://github.com/schmouk/PyRandLib to get access to the code.
Run Code Online (Sandbox Code Playgroud)

该库包含许多一流的伪随机数生成器,同时其作用与 Python“内置”随机库完全相同(只需解压或解压“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)   )
Run Code Online (Sandbox Code Playgroud)

这提供了一个主要优点:在非常短的时间内,用于馈送伪随机生成器的初始种子在两次连续调用之间将存在巨大差异。