python常用模块之random模块的使用

random类中包含的方法:
seed,getstate,setstate,randrange,randint,choice,shuffle,sample,choices,uniform,triangular,normalvariate,lognormvariate,expovariate,vonmisesvariate,gammavariate,gauss,betavariate,paretovariate,weibullvariate。
send(a=None, version=2):对随机数生成器进行初始化,接受一个参数,默认为None,即为当前时间,如果传参为int或字符串,之后的随机函数不管执行多少遍都是一样的结果。

import random
for i in range(5):
    print("\n第{}次执行:".format(i))
    random.seed(1)
    for j in range(5):
        print(random.randint(0, 10),end=" ")

在这里插入图片描述
getstate():用来记录生成器的状态,可供setstate(state)获取。类似快照。

status = random.getstate() # 记录当前生成器状态付给一个变量
for i in range(5):
    print(random.randint(0,10),end=" ")
print("")
random.setstate(status) # 获取上次状态
for i in range(5):
    print(random.randint(0,10),end=" ")

在这里插入图片描述
randrange(start, stop=None, step=1):随机产生一定范围内的整数。

print(random.randrange(4)) # 只传一个参数n时,返回[0,n)之间的整数,n<0报错
print(random.randrange(1,10)) # 返回1到10之间的一个整数,不包括10
print(random.randrange(1,9,2)) # 步长为2,返回1到9之间的任意奇数

在这里插入图片描述
randint(a, b):随机产生a,b之间的整数,包括开头和结尾。
choice(seq):随机返回序列中的一个数据。

print(random.choice("abcd")) # 字符串
print(random.choice([1,2,3,4])) # 列表
print(random.choice(((1,2),(3,4),(5,6)))) # 元组

在这里插入图片描述
shuffle(x, random=None):对一个可变序列进行乱序操作,random用来选择打乱的方式,默认使用random

lst = [1,2,3,4,5,6,7,8]
random.shuffle(lst)
print(lst) # [3, 4, 5, 6, 7, 8, 1, 2]

sample(population, k):从一个序列中随机选择k个数重新组成一个新序列,不会改变原序列。

print(random.sample((1,2,3,4,5,6),4)) # [1, 6, 3, 5]

choices(population, weights=None, *, cum_weights=None, k=1):从一个序列中随机选取k个数据组成一个列表返回,k默认为1,weights表示相对权重,与序列里的数据一一对应,权重越高,被选取的概率越高,cum_weights表示累加权重。

print(random.choices((1,2,3,4,5),weights=(2,5,7,10,4),k=5)) # [4, 4, 4, 4, 2]

uniform( a, b):产生指定范围内的随机浮点数,如果a > b,则产生b到a之间的浮点数,包括a和b。

print(random.uniform(1,1.01)) # 1.0044367084763306

triangular(low=0.0, high=1.0, mode=None):三角分布,返回一个low <= N <=high的三角形分布的随机数,参数mode指明众数出现位置。

print(random.triangular(1,10,8)) # 8.544487709363489

normalvariate(mu, sigma):返回一个符合均值为mu且标准偏差为sigma的正态分布的随机数。

print(random.normalvariate(10,2)) # 13.85465139803518

lognormvariate(mu, sigma):对数正态分布。取符合相应对数正态分布的随机数,mu表示平均数,sigma表示标准偏差。

print(random.normalvariate(10,2)) # 8.115175008548084

expovariate(lambd):返回符合随机分布的数,lambd大于0返回0到正无穷之间的数,反之返回0到负无穷之间的数。

vonmisesvariate(mu, kappa):von Mises分布, 其中mu是平均角, 弧度范围在0到2pi之间, 而kappa是非负集中因子。如果kappa为零, 则该分布简化为统一随机角, 范围在0到2pi之上。

gammavariate(alpha, beta):Gamma分布, 其中alpha>-1, beta>0。

gauss(mu, sigma):均值为mu且标准偏差为sigma的高斯分布,比normalvariate()稍快。

betavariate(alpha, beta):从Beta分布中返回一个在0和1之间的值, 其中alpha>一1而beta>一1。

paretovariate(alpha):形状参数为alpha的Pareto分布。

weibullvariate(alpha, beta):Weibull分布, 比例参数为alpha, 形状参数为beta。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值