random——伪随机数生成模块

转自:https://blog.csdn.net/zhtysw/article/details/79978197

该模块包含构造伪随机数生成器的多个方法。对于整数,伪随机数有统一的选择范围;对于序列,选择的随机元素有统一标准,一个是在当前列表中进行随机排序,另一个是从种子样本中随机生成一个序列。

实际应用中,该模块有专用函数生成符合均匀分布、正态分布、对数分布、负指数分布、伽马分布、贝塔分布的函数。对于生成角,只支持冯·米塞斯分布。几乎所有的模块函数都依赖于基本函数random(),该函数在半开放范围[0.0,1.0)内均匀地生成随机浮点数。Python使用Mersenne Twister作为核心生成器。它生成53位精度浮点数,周期为2 ** 19937-1。

1. 簿记函数

random. seed(a=None, version=2)

初始化随机数生成器。如果a被省略或被赋值为None,则使用当前系统时间为随机源;如果当前操作系统提供随机数源,其优先级高于系统时间。如果a是一个整数,那么直接使用它。

random.getstate()

捕获当前随机数生成器的内部状态,并将其返回。

random.setstate(state)

state应当为在调用该函数之前调用getstate()函数时获取的生成器状态值,并且在执行setatate()后,生成器将会回到以前那个状态。

random. getrandbits(k)

返回一个k位的整数,该整数每位都由随机数构成。

2. 针对整数的随机函数

random. randrange(stop)

random. randrange(start, stop[, step])

该函数等价于choice(range(start, stop, step))或choice(range(stop))意味着给出的随机值属于后面参数定义的值的范围内。

random.randint(a, b)

返回一个随机整数,这个整数大于等于a小于等于b。

3. 针对序列的随机函数

random.choice(seq)

从非空序列seq中随机返回一个元素。

random. choice(population, weights=None, *, cum_weights=None, k=1)

从population中随机选择k个可修改的元素组成一个新的列表,并将其返回。population不能为空。如果weights(权重序列)被给出,选择将会根据相应的权重规划而进行。如果cum_weights被给出,选择将会依据累计权重的方式进行。(类似于:权重序列为[1,2,3,4],累计下来的结果是[1,3,6,10])。

random. shuffle(x[, random])

将序列x随机混合。可选参数random为0参数函数,它会随机返回[0.0, 1.0)内的一个浮点数。

random.sample(population, k)

从population这个序列或集合中随机选择非重复的k个元素组成一个新的列表,该函数用于非替换的随机取样样本。

4. 实数域内概率分布模型所对应函数

该模块内的随机函数,其输出的随机值符合其函数名所示的概率分布模型。

random.random()

从[0.0, 1.0)中随机返回一个浮点数。

random.uniform(a, b)

从a与b确定的范围中随机返回一个浮点数。

random.triangular(low, high, mode)

返回一个随机浮点数N,low<=N<=high,并且mode一定在这个范围内。mode被定义为该区间的重点,给出以它为中点的对称分布。

random.betavariate(alpha, beta)

Beta(β)分布,两个参数必须都大于零,返回值在0与1之间。

random.expovariate(lambd)

指数分布,lambd为1.0处于该分布被期望的均值。

random. gammavariate(alpha, beta)

Gamma(伽马γ)分布,参数必须大于零。分布函数等价于:

) * math.exp(-x / beta)

pdf(x) =  --------------------------------------

math.gamma(alpha) * beta ** alpha

random.gauss(mu, sigma)

高斯(正态)分布,mu是均值,sigma是标准差。

random. lognormvariate(mu, sigma)

对数正态分布。如果你在这个分布中采取自然对数,你会得到一个均值为mu,标准差为sigma的正态分布。

random. normalvariate(mu, sigma)

正态分布,比gauss(mu, signa)实现的慢。

random.vonmisesvariate(mu, kappa)

冯米塞斯分布。mu是角的平均弧度,范围[0, 2*pi];kappa是密度参数,它必须大于等于0。当kappa等于0时,该分布退化为[0, 2*pi]上的标准随机分布。

 

random. paretovariate(alpha)

帕累托分布,alpha是形状参数。

random. weibullvariate(alpha, beta)

威布尔分布,alpha为规模参数,beta是形状参数。

5. 替代产生器

class random. System([seed])

使用os.urandom()函数从操作系统提供的源生成随机数的类。不适用于所有系统。不依赖于软件状态,并且序列不可重现。因此,seed()方法不起作用并被忽略。如果调用getstate()和setstate()方法会引发NotImplementedError。

6. 重复性说明

有时候能够重现伪随机数生成器产生的序列是十分有用的。通过重复使用随机数种子值,只要多个线程没有运行,相同的序列应该在一次又一次的运行中再现。

在Python的版本中,大多数的随机模块实现的算法和种子函数都发生了一定的改变,但有两方面与其他程序中的随机模块没有差别:

①如果一个新的种子模块被添加,那么将配置一个向后兼容的播种机;

②如果给出相同的种子,生成器的random()模块会生成同样的序列。

最新文章

  1. WCF的Restful和TCP方式调用性能比较
  2. Java递归列出所有文件和文件夹
  3. Js 设置class,兼容ie,火狐的方式
  4. WPF中设置快捷键
  5. JMS相关概念
  6. Codeforces Round #197 (Div. 2)
  7. 装饰器模式(Decorator)
  8. DedeCMS批量替换栏目文件保存目录的方法
  9. 深入A标签点击触发事件而不跳转的详解
  10. Django forms 关于select和checkbox设置初始选中值及让前端选中指定值
  11. vue 手机端开发 小商铺 添加购物车 以及结算 功能
  12. [Swift]LeetCode1032. 字符流 | Stream of Characters
  13. Android自动化测试学习路线
  14. 【原创】研发应该懂的binlog知识(上)
  15. ADO中最重要的对象有三个:Connection、Recordset和Command
  16. css的小知识3
  17. Python-html css 盒模型
  18. 24、JSON与OC互相转化
  19. Docker轻量级web图形页面管理 - Portainer部署记录
  20. C# 如何判断ie版本号和获取注册表中的信息

热门文章

  1. 14 (H5*) JS第4天 函数、作用域、预解析
  2. bash shell for循环
  3. Html标签替换(过滤掉html特殊符号)
  4. js 判断是不是数字||判断字符串是不是数字(正则表达式)
  5. Airbnb开源 快速搭建企业级BI数据平台
  6. Python自学第二天学习之《元组与字典》
  7. .net easyui Tree树
  8. SQL语句-exec执行
  9. 云中沙箱学习笔记2-ECS之初体验
  10. 从1到n整数中1出现的次数(整数中1出现的次数)