Python基础学习:random模块

翻译 2018年04月17日 17:43:33

random——伪随机数生成模块

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

       实际应用中,该模块有专用函数生成符合均匀分布、正态分布、对数分布、负指数分布、伽马分布、贝塔分布的函数。对于生成角,只支持冯·米塞斯分布。几乎所有的模块函数都依赖于基本函数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(伽马γ)分布,参数必须大于零。分布函数等价于:

         x ** (alpha -1) * 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()模块会生成同样的序列。

Python3.6 模块学习之random模块

Python模块之random常用函数解析
  • qq_38092017
  • qq_38092017
  • 2017-07-30 13:29:09
  • 2769

Python3.5——内置模块详解之random模块

1、random模块基础的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu import random ...
  • loveliuzz
  • loveliuzz
  • 2017-09-28 20:21:00
  • 758

python随机数模块random

一、概述这个模块实现的伪随机数生成器。 对于整数,从区间选取。对于序列,随机元素。 在实线的,有功能来计算均匀分布,正态分布(高斯) ,对数正态分布,负指数,γ和β分布。对于生成的角度分布,冯·米...
  • tallercc
  • tallercc
  • 2016-10-20 21:24:36
  • 1246

Python的random模块

【Python模块学习】3、random模块 参考:1、官网;2、别人的   以下是random模块的方法: 1 random.seed(a=None, version=2) # 初始化伪随...
  • zheng_lan_fang
  • zheng_lan_fang
  • 2017-08-04 14:47:06
  • 3128

python3中模块详解--random模块

这篇文章我们介绍Python3中一个比较简单的模块,random模块,顾名思义:是生成随机数的一个模块; 言归正传,下面将对random中的常见函数进行讲解: (1)、random():无参数,随...
  • zly412934578
  • zly412934578
  • 2017-06-28 13:29:43
  • 1120

python中numpy的random模块

numpy的random模块里面有好几个生成随机数的函数,总是记不清,今天整理一下。 numpy.random 1. rand(d0,d1,.....,dn) 产生[0,1]的浮点随机数,括号里面...
  • liu450016702
  • liu450016702
  • 2017-03-22 11:07:52
  • 1165

python中的random模块中的randint模块和numpy中random模块的randint的区别

今天从网上down了一个代码下来看看,结果发现运行结果不一样,最后才发现是随机数的问题。在这里Mark一下、 在Python中,通过import random,然后调用random.randomin...
  • xiongchengluo1129
  • xiongchengluo1129
  • 2018-01-16 21:24:03
  • 291

Python3.X中random模块

python中的random模块
  • yue008
  • yue008
  • 2017-03-12 19:16:45
  • 4737

Python 基础——random模块

1. random.randint(a, b) 2. random.choice(sequence)
  • lanchunhui
  • lanchunhui
  • 2016-02-17 12:34:37
  • 377

python 生成随机数 random模块

random模块常用方法 random.random()生成一个随机的浮点数,范围是在0.0~1.0之间。 random.uniform()生成一个随机的浮点数,它可以设定浮点数的范围,一个是上限,一...
  • qq_38165374
  • qq_38165374
  • 2017-07-03 19:31:33
  • 158
收藏助手
不良信息举报
您举报文章:Python基础学习:random模块
举报原因:
原因补充:

(最多只允许输入30个字)