Python 是否有一个生成数据的速度与 os.urandom 一样快但可重现的库?

Does Python have a library that produces data as fast os.urandom but is reproducible?

是否有一个 Python 库可以像 os.urandom 一样快速生成随机数据,但如果给定种子就可以复制数据?

您可以使用 random.seed 生成可重现的序列。唯一的问题是让 Python 快速生成随机字节。您可以使用 a trick observed by @jfs with random.getrandbits 来减少 Python 必须做的处理量:

import random

def almost_urandom(n):
    return random.getrandbits(8 * n).to_bytes(n, 'big')

random.seed 让您确定地生成字节:

In [26]: random.seed(0)

In [27]: almost_urandom(10)
Out[27]: b'\xc2\tb\x9fo\xbe\xd8,\x07\xcd'

In [28]: almost_urandom(10)
Out[28]: b'\n]k\xaa\x94U\xe3\xe7\x06\x82'

In [29]: random.seed(0)

In [30]: almost_urandom(10)
Out[30]: b'\xc2\tb\x9fo\xbe\xd8,\x07\xcd'

In [31]: almost_urandom(10)
Out[31]: b'\n]k\xaa\x94U\xe3\xe7\x06\x82'

对我来说,它的运行速度比 os.urandom() 快一个数量级,即使 n 以百万计也是如此。