Python中生成随机数据random模块总结

1. 伪随机

查看 python 标准库random的文档, 第一行是 

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

 random模块本质上是用数据的算法来实现的, 生成的数据看似随机, 但依然是可重现的。

1.1 seed, getstate, setstate 

通过指定初始化随机数, random.seed 可以使后续生成的随机数具有确定性.

In [1]: import random

In [2]: random.seed(100)
In [3]: [random.random() for _ in range(3)]
Out[3]: [0.1456692551041303, 0.45492700451402135, 0.7707838056590222]

In [4]: random.seed(100)
In [5]: [random.random() for _ in range(3)]
Out[5]: [0.1456692551041303, 0.45492700451402135, 0.7707838056590222]

 从以上代码可以看到, 在 In [4] 这行代码将seed重置为100后, 后续再次调用random.random()时, 和第一次产生的数据是完全相同的

除了指定seed, random模块还提供了2个方法 getstate(), setstate() 来捕获和恢复生成器当前内部状态的对象. 

In [6]: st = random.getstate()

In [7]: [random.random() for _ in range(3)]
Out[7]: [0.705513226934028, 0.7319589730332557, 0.43351443489540376]

In [8]: random.setstate(st)

In [9]: [random.random() for _ in range(3)]
Out[9]: [0.705513226934028, 0.7319589730332557, 0.43351443489540376]

2. random中的常用方法

2.1 随机字节 randbytes

randbytes接收1个参数, 用于返回指定长度的随机字节数据

In [10]: random.randbytes(2)
Out[10]: b'\x80d'
In [11]: random.randbytes(4)
Out[11]: b'\xc7np\xfc'

2.2 随机整数  randint, randr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值