numpy.seed()
numpy.random.seed(seed=None)
用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed()值,则每次生成的随机数都相同。
如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
在对数据进行预处理时,经常加入新的操作或改变处理策略,此时如果伴随着随机操作,最好还是指定唯一的随机种子.
避免由于随机的差异对结果产生影响。
影响范围
随机数种子对后面的结果一直有影响。
后面是指在同一个cell里面。如果不在同一个cell里面,np.random.seed()对其他随机函数没有束缚力。
【例如】
- 每一次的执行结果一样(在同一个cell内)
import numpy as np
np.random.seed(0)
np.random.randint(4)
- 每一次的执行结果不一样(分开两个cell)
import numpy as np
np.random.seed(0)
np.random.randint(4)
离散型随机变量
二项分布
- 定义:二项分布可以用于只有一次实验只有两种结果,各结果对应的概率相等的多次实验的概率问题。
- 二项分布概率函数的数学表示
- 代码
numpy.random.binomial(n, p, size=None)
- size:采样次数(做实验的次数)
- n:做了n重伯努利试验(有多少个个体来做实验)
- p:成功的概率
【例如】
野外正在进行9(n=9)口石油勘探井的发掘工作,每一口井能够开发出油的概率是0.1(p=0.1)。请问,最终所有的勘探井都勘探失败的概率?
numpy.random.binomial(n, p, size=None)
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
np.random.seed(20200605)
n = 9
p = 0.1
size = 50000
#x是实验5000次结果的一个元组
x = np.random.binomial(n, p, size)
print(np.sum(x == 0)/size)
print(np.sum(x == 1)/size)
print(np.sum(x == 2)/size)
print(np.sum(x == 3)/size)
print(np.sum(x == 4)/size)
print(np.sum(x == 5)/size)
print(np.sum(x == 6)/size)
print(np.sum(x == 7)/size)
print(np.sum(x == 8)/size)
print(np.sum(x == 9)/size)
#0.3897
#0.38502
#0.17206
#0.04484
#0.00744