Python Random模块使用
来源:互联网 发布:淘宝买家如何删除评价 编辑:程序博客网 时间:2024/05/25 19:58
参考Python 2.7.13编写,英文好的同学可以直接阅读官方解释。
random模块简介
random模块实现了多种分布的伪随机数分布器。
random模块可以从范围(range)内随机选取一个整数;从序列(sequence)中,选取一个随机的元素;对一个列表(list)进行伪随机排列,或伪随机取样。
random模块也可以计算均匀、正态(高斯)、对数正态、负指数、gamma(伽马)、beta(贝塔)分布。同样也可以使用Mises分布来生成角度的分布。
random函数介绍
记账簿函数:
- random.seed(a=None):初始化伪随机数生成器内部的状态。
- 如果参数为None或没有参数传入,则将会使用系统当前时间或特定的随机源初始化(参考os.urandom()参看详情)。
- 如果传入整数int或long,则将使用hash(a)进行初始化。
- random.setstate(state):返回描述当前生成器状态的对象。该对象可以传给setstate()来复原状态。
- random.setstate(state):state为getstate()返回的对象,setstate()会将生成器内部状态重置为调用getstate()时的状态。
- random.jumpahead(n):将内部状态变为与当前状态差异极大的状态。n为一个非负整数用于扰乱当前状态向量。
整数相关的函数:
- random.randrange(stop); random.randrange(start, stop[, step]): 返回一个从range(start, stop, step)中随机选取的整数。该函数与choice(range(start,stop,step))等价,但不会实际构造range对象。
- random.randint(a, b): 返回一个
[a,b] 范围内的整数N。
序列(sequences)相关的函数:
- random.choice(seq):从非空序列seq中随机返回一个元素。如果seq为空,则返回IndexError。
- random.shuffle(x[, random]):在索引空间内对序列x进行随机重排(洗牌)。可选参数random为返回
[0.0,1.0) 内浮点数的无参函数,默认该函数为random()。
即使是对于较小的len(x), x排列的总数也大于大多数随机数生成器的周期;这意味着一个长序列的大部分排列将永远不会出现。 - random.sample(population, k):从population序列随机选取k个元素以列表形式(list)返回。原population序列将不会改变。
生成随机实数分布
以下函数用于生成特定的实数分布。函数的参数为相应分布方程中的参数;大部分分布方程都可以在统计学资料中找到。
- random.random():返回一个
[0.0,1.0) 范围内的随机数。 - random.uniform(a, b):返回随机浮点数N,满足:若
a≤b ,则a≤N≤b ;若a>b ,b≤N≤a 。
端点值b是否包含在区间内取决于方程a+(b−a)∗random() 的浮点边界。 - random.triangular(low, high, mode):返回一个随机浮点数N,满足:
low≤N≤high 这些边界间特定的模式。low与high默认为0和1,mode默认为区间中点,形成对称分布。 - random.betavariate(alpha, beta):Beta分布,参数需满足
alpha>0 并且beta>0 。返回0到1范围内的值。 - random.expovariate(lambd):指数分布。lambd为1除以指定的非零期望。其参数为lambda,但是Python中的一个保留字。若lambd为正,则返回值范围为0到正无穷,否则为负无穷到零。
- random.gammavariate(alpha, beta):gamma分布。(并非gamma函数!)参数满足
alpha>0 并且belta>0 。
其概率分布函数为
x ** (alpha - 1) * math.exp(-x / beta)pdf(x) = -------------------------------------- math.gamma(alpha) * beta ** alpha
- random.gauss(mu, sigma):高斯分布。mu为均值,sigma为标准差,该函数比下面定义的random.gauss(mu, sigma)函数稍快。
- random.lognormvariate(mu, sigma):对数正态分布。对该分布取对数可以获得以mu为均值、sigma为标准差的正态分布。mu可为任意值,sigma必须大于0。
- random.normalvariate(mu, sigma):正态分布。mu为均值,sigma为标准差。
- random.vonmisesvariate(mu, kappa):mu为平均角度,以弧度表示,范围为0到
2π , kappa为浓度参数,需大于等于零。如果kappa等于零,这该分布退化为区间0到2∗π 的平均分布。 - random.paretovariate(alpha):帕雷拓分布,alpha为其形状参数。
- random.weibullvariate(alpha, beta):威布尔分布,alpha为缩放参数,belta为形状参数。
可用的生成器
示例
>>> random.random() # Random float x, 0.0 <= x < 1.00.37444887175646646>>> random.uniform(1, 10) # Random float x, 1.0 <= x < 10.01.1800146073117523>>> random.randint(1, 10) # Integer from 1 to 10, endpoints included7>>> random.randrange(0, 101, 2) # Even integer from 0 to 10026>>> random.choice('abcdefghij') # Choose a random element'c'>>> items = [1, 2, 3, 4, 5, 6, 7]>>> random.shuffle(items)>>> items[7, 3, 2, 5, 6, 4, 1]>>> random.sample([1, 2, 3, 4, 5], 3) # Choose 3 elements[4, 1, 5]
阅读全文
0 0
- Python Random模块使用
- Python random模块
- Python中的random模块
- Python 之 random模块
- python模块之----random
- python random模块
- python random模块
- Python random模块
- python random模块
- python的 random模块
- Python random模块
- python random模块
- Python中的random模块
- Python中的random模块
- python random模块
- Python random模块
- python random模块
- Python中的random模块
- sublime复制/交换当前行和代码移动
- Loadrunner 获取ResponseBody,并去除乱码打印出来
- java io流中为什么要序列化和反序列化
- JavaScript编译
- Maven项目中pom文件分析
- Python Random模块使用
- java实现选择排序
- 在Oracle与mysql中自动生成uuid
- 多线程(6)
- 業務システムの開発ドキュメント標準化 第5回:詳細設計書(後半)
- 获取微信返回事件时的感悟
- 将JSON对象和数组合并成一个JSON对象
- TQ2440的FCLK,HCLK,PCLK,UCLK时钟频率设置 (2013-08-22 09:14:19)转载▼
- [Leetcode] 259. 3Sum Smaller 解题报告