random模块——随机数常用函数介绍

目录

 random.random():随机产生一个[0,1)的数字

random.seed():设置随机种子

random.shuffle():打乱序列

random.getstate():获取当前随机状态

random.setstate():设置当前随机状态

random.getrandbits(k):生成占内存k位以内的随机整数

random.uniform(m,n):返回一个在m,n之间的数

random.randint(m,n):返回一个在m,n之间的整数

random.randrange(start,end,step):从start到end但不包括end,步长位step的随机数

random.choice(a):随机返回a中的一个随即元素

random.choices(a,weights=None,cum_weights=None,k=1):是random.choice()的升级版

random.sample():随机取样


 random.random():随机产生一个[0,1)的数字

>>> random.random()
0.1397457849666789

random.seed():设置随机种子

拥有相同随机种子的程序每次从头执行的随机结果都是一样的

>>> import random
>>> random.seed(0)#第一次设定随机种子
>>> print(random.random())
0.8444218515250481
>>> print(random.random())
0.7579544029403025
>>> random.seed(0)#重新设定随机种子
>>> print(random.random())
0.8444218515250481

random.shuffle():打乱序列

>>> a=[1,2,3,4,5,6]
>>> random.shuffle(a)
>>> a
[5, 1, 2, 6, 3, 4]

random.getstate():获取当前随机状态

经常用于记录当前的随机状态,与下面的random.setstate()搭配使用

random.setstate():设置当前随机状态

>>> a=[1,2,3,4,5,6]
>>> b=[11,12,13,14,15,16]
>>> state=random.getstate()#提前存储随机状态
>>> random.shuffle(a)
>>> a
[5, 1, 2, 6, 3, 4]
>>> random.setstate(state)#将当前随即状态设定为之前存储的随机状态
>>> random.shuffle(b)
>>> b
[15, 11, 12, 16, 13, 14]
#根据输出的结果我们可以看到数字随机后的位置是不变的

random.getrandbits(k):生成占内存k位以内的随机整数

>>> random.getrandbits(10)
516
>>> random.getrandbits(10)
142
>>> random.getrandbits(10)
288

random.uniform(m,n):返回一个在m,n之间的数

>>> random.uniform(10,11)
10.647375592201469

random.randint(m,n):返回一个在m,n之间的整数

>>> random.randint(10,12)
10
>>> random.randint(10,12)
11

random.randrange(start,end,step):从start到end但不包括end,步长位step的随机数

>>> random.randrange(10,100,50)
10
>>> random.randrange(10,100,50)
60

random.choice(a):随机返回a中的一个随即元素

>>> a=[1.1,2.2,3.3]
>>> random.choice(a)
2.2
>>> random.choice(a)
1.1

random.choices(a,weights=None,cum_weights=None,k=1):是random.choice()的升级版

a:待选择的序列

weights:相对权重

cum_weights:累加权重

k:选择次数

>>> random.choices(a,weights=[1,5,4],k=10)
[2.2, 2.2, 3.3, 2.2, 3.3, 2.2, 2.2, 3.3, 2.2, 3.3]
#每一个成员被抽到的概率是相对权重之和的负一次幂,乘以自己的权重
>>> random.choices(a,weights=[3,4,4],k=10)
[1.1, 2.2, 3.3, 1.1, 2.2, 1.1, 3.3, 2.2, 2.2, 2.2]
#cum_weights是weights的累加即当weight=[1, 2, 3, 4]时,则cum_weights=[1, 3, 6, 10],就是一个个的加起来
>>> random.choices(a,cum_weights=[3,3,3],k=10)
[1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1]
>>> random.choices(a,cum_weights=[1,3,6],k=10)
[3.3, 3.3, 3.3, 3.3, 2.2, 1.1, 3.3, 2.2, 1.1, 3.3]

random.sample():随机取样

与上述choices的区别在于sample不能选取重复的元素,所以如果随机取样的次数超过序列中元素的个数,sample函数将会报错

>>> random.sample(a,k=2)
[2.2, 3.3]
>>> random.sample(a,k=4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\python\lib\random.py", line 449, in sample
    raise ValueError("Sample larger than population or is negative")
ValueError: Sample larger than population or is negative
  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱打羽毛球的小怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值