random 随机函数模块
一、seed() 与 random() 函数:
1. seed() 函数初始化一个随机种子,默认是当前系统时间。
2. random() 函数生成一个 [0.0, 1.0] 之间的随机小数。
3. 示例:
import random
random.seed(10)
x = random.random()
print(x)
# 输出结果:
#
# 0.5714025946899135
4. random.seed() 函数通过 seed() 函数可以每次生成相同的随机数,如:
import random
random.seed(10)
x = random.random()
print(x)
random.seed(10)
y = random.random()
print(y)
# 输出结果:
#
# 0.5714025946899135
# 0.5714025946899135
· 在不同的代码上获取的值是不同的,但 x 与 y 是相同的。
二、getstate() 与 setstate(state) 函数:
1. getstate() 函数用于记录随机数生成器的状态。
2. setstate() 函数用于将生成器恢复到上次记录的状态。
3. 示例:
import random
state_tuple = random.getstate()
for i in range(4):
print(random.random())
print("*"*20)
random.setstate(state_tuple)
for j in range(4):
print(random.random())
# 输出结果:
#
# 0.49823674937029105
# 0.2084025522915729
# 0.7607231706339623
# 0.878836147845224
# ********************
# 0.49823674937029105
# 0.2084025522915729
# 0.7607231706339623
# 0.878836147845224
· 输出的两次随机数一致。
三、randint() 与 randrange() 函数:
1. randint():生成一个 [x, y] 区间内的整数。
语法格式:
random.randint(start,stop)
2. randrange():生成一个 [m, n) 区间之内以 k 为步长的随机整数。
语法格式:
random.randrange(start,stop,step)
· 如果函数调用时只有一个参数,默认是从 0 开始到这个数,步长为 1。如:
import random
for i in range(3):
print("*"*5)
print(random.randrange(10))
print(random.randrange(5,10))
print(random.randrange(5,100,5))
# 输出结果:
#
# *****
# 3
# 6
# 55
# *****
# 8
# 7
# 80
# *****
# 0
# 9
# 50
3. 示例:
import random
x = random.randint(1,10)
print(x)
y = random.randrange(1,10,2)
print(y)
# 输出结果:
#
# 2
# 7
四、getrandbits(k) 与 choice(seq) 函数:
1. getrandbits(k):生成一个 k 比特长的随机整数,实际输出的是 k 位二进制数转换成的十进制数。如:
import random
x = random.getrandbits(5) # 生成长度是00000-11111
print(x)
print(bin(x))
# 输出结果:
#
# 8
# 0b1000
2. choice(seq):从序列中随机选择一个元素。如:
import random
my_list = 'Jelly'
for i in range(4):
print(random.choice(my_list))
# 输出结果:
#
# l
# J
# y
# J
五、shuffle(seq) 与 sample(pop, k) 函数:
1. shuffle(seq):将原序列中的元素随机排列,并且原序列被修改。如:
import random
my_list = [1,2,3,4,5,6,7,8,9]
random.shuffle(my_list)
print(my_list)
# 输出结果:
#
# [3, 2, 4, 1, 6, 5, 7, 8, 9]
· shuffle() 函数只能用于可变序列。
2. sample(pop, k):从原序列中随机选择 k 个元素,原序列不变。如:
import random
my_list = ["梦想", "Jelly", 1, 2, [3, 4]]
ls = random.sample(my_list, 4)
print(ls)
# 输出结果:
#
# [2, 1, 'Jelly', '梦想']
六、uniform(a, b)、betavariate() 和 triangular() 函数:
1. uniform():生成一个 [a, b] 之间的随机小数,采用等概率分布。
2. betavariate():生成一个 [0, 1] 之间的随机小数,采用 beta 分布。
3. triangular():生成一个 [low, high] 之间的随机小数,采用三角分布。
七、其他随机分布函数:
1. expovariate:生成一个 (0, +∞) 之间的随机函数,指数分布;
2. gammavariate:采用 gamma 分布;
3. gauss:采用高斯(正态)分布;
4. lognormvariate:对数正态分布;
5. normalvariate:正态分布;
6. vonmisesvariate:冯米塞斯分布;
7. paretovariate:帕累托分布;
8. weibullvariate:韦伯分布。