random是python的一个内置模块,专门用于生成随机数,但是要明确一点,random模块生成的并非真正的随机数,而是伪随机数。random提供的部分方法可以生成指定分布的随机数,比如生成符合高斯分布的随机数,这些方法在处理数学问题时将非常有用。
1. 随机数种子
random模块生成的都是伪随机数,具体生成的随机数是什么取决于随机数种子,当随机数种子相同时,生成的随机数也就相同。使用seed方法可设置随机数种子。
import random
random.seed(5)
print(random.randint(1, 100)) # 80
这段代码,不论谁执行,在哪里执行,生成的随机数都是80,因为随机数种子都是5,如果使用seed方法设置随机数种子或者seed方法在调用时不传参数,则使用系统当前的时间来作为随机数种子,这也是我们平常所采用的方法,不设置随机数种子。
某些情况下设置随机数种子,是为了让某个包含了随机数的算法能够有相同的结果,这样便于验证算法的正确性。
2. 生成指定分布的随机数
random模块的一些方法可以生成符合指定分布的随机数,比如random.gauss
def gauss(self, mu, sigma):
- mu 是平均值
- sigma 是标准差
下面的代码生成10000个符合平均值为3标准为1的随机数并绘制出直方图。
import random
import matplotlib.pyplot as plt
nums = []
for i in range(10000):
value = random.gauss(3, 1)
nums.append(value)
plt.hist(nums, bins=200)
plt.show()
除了高斯分布以外,random还支持生成指数分布,Gamma 分布等其他分布的随机数,在实践中,这类方法极少使用,因此不做过多介绍。
3. 随机生成整数的方法
3.1 random.randint(a, b)
random.randint方法返回一个随机整数N,N满足条件a <= N <= b
>>&g