random的用法

Random模块

random模块常用函数
函数名 功能
random.random() 生成一个[0,1)的实数。
random.randint(a,b) 生成一个[a,b]的数字,包含a和b。
random.randrange(a,b) 生成一个[a,b)的数字,包含a,不包含b。
random.shuffle(x) 把序列x打乱。
random.choice(x) 从x中返回一个随机项,x需要是一个可变序列。
random.uniform(a,b) 生成一个a,b之间的浮点数,区间可以是浮点数。

生成一个0-1的随机浮点数

1
2
3
4
import random
import numpy as np

random.random()
0.8204615832898717

生成一个[a,b]之间的数字,包含a和b

1
random.randint(-3, 5)
-3

生成一个[a,b]的数字,包含a不包含b

1
random.randrange(-3, 5)
4

将一个序列进行重新排序,打乱序列

1
2
3
a = list("ABCDE")
random.shuffle(a)
a
['E', 'D', 'A', 'B', 'C']

返回一个序列中的一个随机元素

语法:random.choice(seq)

从非空序列中随机选取一个数据并返回

  • seq:可以是list、tuple、str、set。
1
2
3
random.choice([-3, 3, 5])

random.choice([str(i).rjust(3,"0") for i in range(1000)])
3

'265'

返回一个序列中的多个元素

语法:random.choices(seq,weights=None,*,cum_weights=None,k=1)

  • seq:集群。
  • weights:相对权重
  • cum_weights:累加权重。
  • k:选取次数。

作用:从集群中随机选取k次数据,返回一个列表,可以设置权重。
注意:每次选取都不会影响原序列,每一次选取都是基于原序列。

1
2
3
a = [i for i in range(100,150,10)]
a
random.choices(a,k=5)
[100, 110, 120, 130, 140]

[120, 100, 100, 110, 100]
1
2
3
4
5
6
7
8
9
10
# 配置权重参数,参数形式是一个与之对应数量的seq,而且权重数字与元素一一对应
# 此处设置了的权重为:[1,2,3,0,2], 相当于{100:1,110:2,120:3,130:0,140:2}
# 130 的权重是0 ,那么永远也选不到。
# 100的概率:1/(1+2+3+0+2) = 1/8
# 110的概率:2/(1+2+3+0+2) = 2/8
# 120的概率:3/(1+2+3+0+2) = 3/8
# 130的概率:0/(1+2+3+0+2) = 0
# 140的概率:2/(1+2+3+0+2) = 2/8

random.choices(a,weights=[1,2,3,0,2],k=10)
[140, 140, 120, 120, 110, 140, 110, 120, 120, 110]
1
2
3
4
# cum_weights 累加权重,设置方法与相对权重一致
# 若:cum_weights=[1,2,3,4,5] 第一个元素的权重是1,第二个元素的权重为2-1,第三个:3-2,第四个:4-3

random.choices(a,cum_weights=[1,3,6,10,11],k=5)
[110, 130, 120, 110, 130]

用于生成指定范围内的随机浮点数

1
round(random.uniform(-3, 6), 2)
-1.69