python random- 生成伪随机数

9.6. random- 生成伪随机数

源代码: Lib / random.py


该模块为各种分布实现伪随机数生成器。

对于整数,从范围中有统一的选择。对于序列,存在随机元素的统一选择,用于生成列表的随机排列的函数,以及用于随机抽样而无需替换的函数。

在实线上,有计算均匀,正态(高斯),对数正态,负指数,伽马和贝塔分布的函数。为了生成角度分布,可以使用von Mises分布。

几乎所有模块函数都依赖于基本函数random(),它在半开放范围[0.0,1.0]内均匀生成随机浮点数。Python使用Mersenne Twister作为核心生成器。它产生53位精度浮点数,周期为2 ** 19937-1。C中的底层实现既快又线程安全。Mersenne Twister是现存最广泛测试的随机数发生器之一。但是,完全确定性,它不适用于所有目的,并且完全不适合加密目的。

此模块提供的函数实际上是random.Random类的隐藏实例的绑定方法。您可以实例化自己的实例Random以获取不共享状态的生成器。

Random也可以,如果你想用你自己设计的不同的基本发电机子类:在这种情况下,覆盖random(), seed()getstate(),和setstate()方法。可选地,新生成器可以提供getrandbits()方法 - 这允许randrange()在任意大范围内产生选择。

random模块还提供了SystemRandom使用系统函数os.urandom()从操作系统提供的源生成随机数的类。

警告

 

此模块的伪随机生成器不应用于安全目的。有关安全性或加密用途,请参阅该secrets模块。

也可以看看

 

M. Matsumoto和T. Nishimura,“Mersenne Twister:623维等分的均匀伪随机数发生器”,ACM Transactions on Modeling and Computer Simulation Vol。1998年1月8日第1期。

具有长周期和相对简单的更新操作的兼容替代随机数发生器的互补 - 乘法携带配方

9.6.1.簿记功能

random.seeda =无版本= 2 

初始化随机数生成器。

如果一个被省略或None,当前系统时间被使用。如果操作系统提供随机源,则使用它们而不是系统时间(os.urandom()有关可用性的详细信息,请参阅函数)。

如果a是int,则直接使用。

对于版本2(默认值),a strbytesbytearray 对象将转换为a int并使用其所有位。

与版本1(提供用于从旧版本的Python再现随机序列)时,算法strbytes产生更窄的范围种子。

版本3.2中已更改:已移至版本2方案,该方案使用字符串种子中的所有位。

random.getstate()

返回捕获生成器当前内部状态的对象。可以传递此对象setstate()以恢复状态。

random.setstate状态

状态应该已经从以前的调用获得getstate(),并且 setstate()恢复发生器的内部状态,这是什么的时候getstate()被调用。

random.getrandbits

返回一个带有k个随机位的Python整数。此方法随MersenneTwister生成器一起提供,其他一些生成器也可以将其作为API的可选部分提供。可用时,getrandbits()可以randrange()处理任意大范围。

猜你喜欢

转载自blog.csdn.net/qq_35892623/article/details/81323277