随机数的生成
1.设置种子
计算机是根据被称为“种子(seed)”的数据来生成随机数的。 所谓种子,是指在生成随机数的过程中所使用的初始值,如果种子的值固定不变,生成的随机数序列也是不变的。通过使用相同的随机数序列,在同样的条件下,即使是使用了随机数得到的计算结果也是可重现的。 如果不对种子进行设置,计算机就会使用当前的时间作为种子的初始值,因此每次执行代码都会有输出不同的随机数。 可以通过将种子(整数)传递给 numpy.random.seed() 对种子的数值进行设置。
编程实现:
- 设置种子/不设置种子的前后变化比较
import numpy as np
#确认不进行初始设置时产生的随机数是否一致
#分别在X、Y中产生五个随机数
X = np.random.randn(5)
Y = np.random.randn(5)
# 对X、Y的值进行输出
print("X:",X)
print("Y:",Y)
代码语言:javascript复制可以通过设置种子(整数)传递给np.random.seed()对其数值进行设置。
# 对种子进行设置
np.random.seed(0)
# 将随机数序列带入变量中
x = np.random.randn(5)
# 将传入相同的种子值进行初始化设置
np.random.seed(0)
# 再次创建随机数序列并将其带入其他的变量中
y = np.random.randn(5)
# 对x、y的值进行输出,并确认是否一致
print("x:",x)
print("y:",y)
2.生成服从正态分布的随机数
对使用np.random.randn生成的随机数进行绘制后,得到的直方图与被称为正态分布的公式的曲线图形状相近。 如果将整数传递给np.random.randn(),就可以返回服从正态分布的随机数传递的数值的数量。
编程实现:
生成10000个服从正态分布的随机数,并将其带入变量x中
代码语言:javascript复制将整数传递给np.random.randn(),就可以返回服从正态分布的随机数传递的数值的数量。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# 将种子的值设置为0
np.random.seed(0)
# 生成10000个服从正态分布的随机数,并将他们带入变量x中
x = np.random.randn(10000)
#可视化
plt.hist(x,bins='auto')
plt.show()
3.生成服从二项分布的随机数
使用numpy.random.binomial()可以返回某次尝试的结果,无论其结果是成功还是失败。例如,抛硬币时得到的结果只可能是正面或者反面。 此外,无论结果是成功还是失败,其概率都是0.5,如果将整数n和大于0小于1的实数p传递给numpy.random.binomial()。程序将对成功率p进行n次实验,并在最后对成功的次数进行返回,如果将“size=整数值”传递给第三个参数,程序将返回所指定数量的n次尝试的成功次数。
程序实现
对在成功概率为0.5的条件下尝试100次得到的成功次数进行10000次的求解,并将结果带入nums中,即计算nums的成功次数及其成功率的平均值。
代码语言:javascript复制如果将整数n和大于0小于1的实数p传递给numpy.random.binomial()。程序将对成功率p进行n次实验,并在最后对成功的次数进行返回,如果将“size=整数值”传递给第三个参数,程序将返回所指定数量的n次尝试的成功次数。
import numpy as np
# 将种子值设置为0
np.random.seed(0)
# 对在成功概率为0.5的条件下尝试100次得到的成功次数进行10000次的求解
# 结果存入nums变量
nums = np.random.binomial(100, 0.5, size = 10000)
# 输出成功率的平均值
print(nums.mean()/100)
4.列表数据的随机选择
将列表型数据x与整数值n传递给numpy.random.choice(),可以将列表型数据中随机选择n个元素组成新的列表并返回。
编程实现:
在列表x中随机选择5个元素,并将结果带入变量y中
代码语言:javascript复制import numpy as np
x = ['Apple','Orange','Pineapple','Kiwifruit','Strawberry']
# 将种子值设置为0
np.random.seed(0)
# 对列表x中随机选择五个元素,并将结果存入y
y = np.random.choice(x,5)
# 输出y
print(y)