由于您想要生成某个特定范围内的整数,因此使用random.SystemRandom
类代替。创建该类的实例将为您提供一个支持该类的所有方法的对象random
模块,但使用os.urandom()
在幕后。例子:
>>> from random import SystemRandom
>>> cryptogen = SystemRandom()
>>> [cryptogen.randrange(3) for i in range(20)] # random ints in range(3)
[2, 2, 2, 2, 1, 2, 1, 2, 1, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 0]
>>> [cryptogen.random() for i in range(3)] # random floats in [0., 1.)
[0.2710009745425236, 0.016722063038868695, 0.8207742461236148]
等使用urandom()
直接地,您必须发明自己的算法来将其产生的随机字节转换为您想要的结果。不要那样做;-)SystemRandom
为你做。
请注意文档的这一部分:
类 random.SystemRandom([种子])
使用 os.urandom() 函数从操作系统提供的源生成随机数的类。并非在所有系统上都可用。不依赖于软件状态并且序列不可再现。因此,seed() 和 Jumpahead() 方法无效并被忽略。如果调用 getstate() 和 setstate() 方法,则会引发 NotImplementedError。