python里不能调用random库_Python标准库教程—random模块

本文翻译自 Doug Hellmann 的 PyMOTW-3项目的random模块。

原文链接:https://pymotw.com/3/random/index.html

本文使用cc-by-nc-sa 4.0协议共享。

random—伪随机数生成器

random模块提供了基于Mersenne Twister算法的快速伪随机数生成器。起初开发它是为了产生蒙特卡洛模拟的输入,Mersenne Twister生成的数近乎均匀分布并且周期大,使其适合更加广泛的应用。

生成随机数

random函数从生成序列中返回下一个随机浮点数。所有返回值都包含在0 <= n < 1.0。

# random_random.py

import random

for i in range(5):

print('%04.3f' % random.random(), end=' ')

print()

重复运行程序以获得不同的值序列。

$ python3 random_random.py

0.859 0.297 0.554 0.985 0.452

$ python3 random_random.py

0.797 0.658 0.170 0.297 0.593

为获得特定范围的数,使用uniform()。

# random_uniform.py

import random

for i in range(5):

print('{:04.3f}'.format(random.uniform(1, 100)), end=' ')

print()

传递最大值和最小值, 然后uniform()使用公式min + (max - min) * random()调整random()的返回值。

$ python3 random_uniform.py

12.428 93.766 95.359 39.649 88.983

种子

random()在每次调用时产生不同的值,在重复任何值前有相当大的周期。这对产生唯一的值或变量很有用,有时也对以不同的方式处理相同的数据集很有用。一种技术是使用程序生成随机值,并保存随机值到独立的步骤中处理。但是,这对大型数据集来说不切实际,因此random提供了初始化伪随机数生成器的seed()函数,以生成一组预期的值。

# random_seed.py

import random

random.seed(1)

for i in range(5):

print('{:04.3f}'.format(random.random()), end=' ')

print()

种子控制了伪随机数生成公式的第一个值,并当公式确定时也设置了种子改变后生成的完整序列。seed()的参数可以是任何hashable 对象。默认使用平台特定的随机资源,如果有的话。否则,使用当前时间。

保存状态

random()中使用的伪随机数算法的内部状态可以被保存下来,用以控制后续运行中生成的数字。在继续运行前保存先前的状态可减少从以前的输入重复值或值序列的可能性。getstate()返回的数据可用于稍后通过setstate()重新初始化随机数生成器。

# random_state.py

import random

import os

import pickle

if os.path.exists('state.dat'):

#Restore the previously saved state

print('Found state.dat, initializing random module')

with open('state.dat','rb') as f:

state =pickle.load(f)

random.setstate(state)

else:

# Use a well-known start state

print('No state.dat, seeding')

random.seed(1)

#Produce random values

for i in range(3):

print('{:04.3f}'.format(random.ra

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值