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——伪随机数生成模块的更多相关文章

  1. .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

    .Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ...

  2. 利用 random 与 tertools 模块解决概率问题

    Python 中的 random 与 tertools 模块可以得到伪随机数与排列.组合,下面利用这两个模块求解一些有趣的概率问题. 一.random 与 tertools 模块 random 模块常 ...

  3. Random随机数种子生成,减少生成重复随机数的可能

    我们都知道使用Random可以生成随机数,默认的无参的构造函数New Random().使用与时间相关的默认种子值,初始化 System.Random 类的新实例. 这种方式生成随机数时重复的概率很大 ...

  4. python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

  5. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

  6. 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

    高并发分布式系统中生成全局唯一(订单号)Id   1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...

  7. python笔记-6(import导入、time/datetime/random/os/sys模块)

    一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内容待日后有深入理解了再来细说 1.import可以导入的两种不同的内容 1.1 *.py文件结尾的文件 ...

  8. 大数据技术之_25_手机APP信息统计系统项目_01_APP 数据生成模块 + 数据收集模块 + 数据处理模块框架搭建 + 业务需求处理 + 数据展示模块 +项目总结 + 问题总结

    一 项目概述1.1 角色1.2 业务术语1.3 项目效果展示二 项目需求三 项目概要3.1 项目技术架构3.2 项目目录结构3.3 项目技术选型3.4 项目整体集群规划3.5 创建项目工程四 APP ...

  9. day25-2 random,os,sys模块

    目录 random 为什么要有random模块,random模块有什么用 os 为什么要有os模块,os模块有什么用 sys 为什么要有sys模块,sys模块有什么用 random import ra ...

随机推荐

  1. ntp局域网时间同步操作

    需求:局域网里面有两台电脑需要同步时间 一台windows,一台Linux.把windows当作服务器 windows10自带ntp服务器,可以按如下步骤进行设置 1. 打开注册表编辑器,在运行里面输 ...

  2. JAVA总结--多线程

    一.概念 1.进程:一个具有一定独立功能的程序,关于某些数据集合,一次运行活动. 两点:1.有自己的空间存储数据:2.一个程序. 进程,是系统   进行   资源分配  和 调度  的基础单位.动态性 ...

  3. spring注解之@Scope

    转自:https://blog.51cto.com/4247649/2118351 作者:知了123 主要从以下几方面来介绍一下@Scope注解 @Scope注解是什么 @Scope注解怎么使用 @S ...

  4. 打乱一个排好序的 list 对象 alist?

    1. import random 2. random.shuffle(alist)

  5. id 和 name 区别

    在html中:name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号. name是用来提交数据的,提供给表单用,可以重复: id则针对文档操作时候用,不能重复.如:document ...

  6. 用URLGather来管理和保存你的页面

    下载链接:http://url-gather.software.informer.com/download/#downloading 安装的过程简单,这里不一一叙述. 安装成功后,找到软件安装的路径, ...

  7. [HNOI2009]有趣的数列(卡塔兰数,线性筛)

    [HNOI2009]有趣的数列 题目描述 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1< ...

  8. Ansible笔记(2)---常用模块之文件操作

    一.copy模块 1.1作用: copy模块是将ansible主机上的文件拷贝到远程受控主机 1.2常用参数: src参数 :用于指定需要copy的文件或目录. dest参数 :用于指定文件将被拷贝到 ...

  9. Ansible笔记(1)---基本概念

    一.ansible的作用以及工作结构 1.1.ansible简介: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func ...

  10. AtCoder Beginner Contest 137

    前言 又是卡在了T4 , 总分 100 + 200 + 300 = 600pts rank 2449.以后还是要多积累比赛经验. A 输出a+b,a-b,a*b中最大的数,还要多简单?不挂代码了 B ...