random——伪随机数生成模块
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()模块会生成同样的序列。
random——伪随机数生成模块的更多相关文章
- .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ...
- 利用 random 与 tertools 模块解决概率问题
Python 中的 random 与 tertools 模块可以得到伪随机数与排列.组合,下面利用这两个模块求解一些有趣的概率问题. 一.random 与 tertools 模块 random 模块常 ...
- Random随机数种子生成,减少生成重复随机数的可能
我们都知道使用Random可以生成随机数,默认的无参的构造函数New Random().使用与时间相关的默认种子值,初始化 System.Random 类的新实例. 这种方式生成随机数时重复的概率很大 ...
- python 常用模块之random,os,sys 模块
python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...
- 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
高并发分布式系统中生成全局唯一(订单号)Id 1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...
- python笔记-6(import导入、time/datetime/random/os/sys模块)
一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内容待日后有深入理解了再来细说 1.import可以导入的两种不同的内容 1.1 *.py文件结尾的文件 ...
- 大数据技术之_25_手机APP信息统计系统项目_01_APP 数据生成模块 + 数据收集模块 + 数据处理模块框架搭建 + 业务需求处理 + 数据展示模块 +项目总结 + 问题总结
一 项目概述1.1 角色1.2 业务术语1.3 项目效果展示二 项目需求三 项目概要3.1 项目技术架构3.2 项目目录结构3.3 项目技术选型3.4 项目整体集群规划3.5 创建项目工程四 APP ...
- day25-2 random,os,sys模块
目录 random 为什么要有random模块,random模块有什么用 os 为什么要有os模块,os模块有什么用 sys 为什么要有sys模块,sys模块有什么用 random import ra ...
随机推荐
- mysql树查询、递归查询
关键词:mysql树查询,mysql递归查询 转自:http://www.cnblogs.com/c-h-y/p/9420726.html 之前一直用的是Oracle,对于树形查询可以使用start ...
- 剑指Offer编程题(Java实现)——数组中的重复数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- SpringBootTest单元测试及日志
springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich. 由于是一系列文章,所以后面的文章可能会使用到前面文章的项 ...
- Git基本常用指令
开发十年,就只剩下这套架构体系了! >>> Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目 ...
- 攻防世界--ReverseMe-120
测试文件:https://adworld.xctf.org.cn/media/task/attachments/a5c0e8322d9645468befabddfe0cb51d.exe 1.准备 获取 ...
- BUUCTF--rsa
测试文件:https://buuoj.cn/files/ed10ec009d5aab0050022aee131a7293/41c4e672-98c5-43e5-adf4-49d75db307e4.zi ...
- Version Controlling with Git in Visual Studio Code and Azure DevOps
Overview Azure DevOps supports two types of version control, Git and Team Foundation Version Control ...
- 云中沙箱学习笔记2-ECS之初体验
1.1 背景知识 云服务器(Elastic Compute Service, 简称ECS),是一种简单高效,处理能力可以弹性伸缩的计算服务.ECS的相关术语说明如下: --实例(Instance):是 ...
- 2019hdu多校3 hdu4893(线段树单点 区间更新
补这题主要是因为第三个操作要维护区间,而不是点,否则会T. https://vjudge.net/problem/HDU-4893 题意:输入n.q.表示有n个数,初始化默认这n个数都为零,有q次操作 ...
- UVAlive 3485 Bridge(抛物线弧长积分)
Bridge A suspension bridge suspends the roadway from huge main cables, which extend from one end of ...