目录
random.random():随机产生一个[0,1)的数字
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.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