其随机数生成方式利用的是梅森旋转算法生成的伪随机数。相比于python标准库的random模块,numpy中的包含更多的分布以供选择。
随机数生成器
- 生成器种子设置
seed(self, seed=None)
- 生成器内部状态
get_state()
- 生成器内部状态设置:
set_state(state)
参数:state :——有两种数据类型可选{tuple(str, ndarray of 624 uints, int, int, float), dict},具体不做描述。
各种分布
当需要其中分布对应的标准分布时,用 “standard_对应的分布名称即可”
1. beta 分布:
a,b分布为分布的参数,size为一元组。
beta(a, b, size=None)
2. 二项分布:
binomial(n, p, size=None)
3. 卡方分布:
chisquare(df, size=None)
4. 狄利克雷分布:
dirichlet(alpha, size=None)
5. 指数分布:
f(x;1β)=1βexp(−xβ)f(x; \frac{1}{\beta}) = \frac{1}{\beta} \exp(-\frac{x}{\beta})f(x;β1)=β1exp(−βx)
exponential(scale=1.0, size=None)
6. F分布:
f(dfnum, dfden, size=None)
7. 伽马分布:
gamma(shape, scale=1.0, size=None)
8. 几何分布:
geometric(p, size=None)
9. Gumbel 分布:
gumbel(loc=0.0, scale=1.0, size=None)
10. 超几何分布:
hypergeometric(ngood, nbad, nsample, size=None)
11. 拉普拉斯分布:
laplace(loc=0.0, scale=1.0, size=None)
12. Logistic分布:
logistic(loc=0.0, scale=1.0, size=None)
13. 对数正态分布:
lognormal(mean=0.0, sigma=1.0, size=None)
14. 对数级数分布:
logseries(p, size=None)
15. 多项式分布:
参数:n —— 实验次数
pvals —— 浮点数序列,长度为 p,第 p 个不同输出对应的概率,这些序列之和必须为1(通常假定最后一个 p 为剩余所有元素的概率,但需满足和小于等于 1 )。
multinomial(n, pvals, size=None)
16. 多元正态分布:
参数:mean —— 若为一维数组,长度为 N;
cov —— 协方差,则应为 2维数组,长度 N*N;
check_valid ——{ ‘warn’, ‘raise’, ‘ignore’ }:进行判断,当协方差矩阵为非正定时;
multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8)
16. 负二项分布:
negative_binomial(n, p, size=None)
17. 非中心卡方分布:
noncentral_chisquare(df, nonc, size=None)
18. 非中心 F 分布:
noncentral_f(dfnum, dfden, nonc, size=None)
19. 正态分布:
normal(loc=0.0, scale=1.0, size=None)
20. Lomax 分布:
pareto(a, size=None)
21. 泊松分布:
poisson(lam=1.0, size=None)
22. power 分布:
power(a, size=None)
23. 瑞利分布:
rayleigh(scale=1.0, size=None)
24. 标准 t 分布:
standard_t(df, size=None)
25. 矩形分布:
参数:mode——尖峰所在位置,在 left 和 right 之间;
triangular(left, mode, right, size=None)
26. 均匀分布:
uniform(low=0.0, high=1.0, size=None)
27. von Mises 分布:
vonmises(mu, kappa, size=None)
28. Wald分布(反正态分布):
wald(mean, scale, size=None)
29. weibull分布:
weibull(a, size=None)
30. Zipf分布:
zipf(a, size=None)
操作
1. 从以供一维数组中随机选择一个样本:
choice(a, size=None, replace=True, p=None)
参数:
a —— 如果是数组,则从数组元素中随机选取一个;若为一个整型,则从数组 np.arange(a)中随机选择一个;
replace —— 布尔值,样本是否被替代;
p —— 一维数组,是 a 中每个元素被选择的概率;若为 None,则 a 中每个元素被选择的概率都相同;
2. 对一个序列进行随机交换,顺序重排:
permutation(x)
参数:x —— 若 x 为整数,则对 np.arange(x) 进行重排;若为数组,则直接重排(copy后重排);
3. 随机生成一个任意维的随机数序列(从均匀分布 [0,1)中获得)
:其中 dn 为第 n 维的数目;
rand(d0, d1, ..., dn)
4. 获取一个随机整数分布(从一个半开的离散分布 [low,high)中获得):
randint(low, high=None, size=None, dtype=int)
5. 随机生成一个任意维的随机数序列(从标准正态分布中获得):
其中 dn 为第 n 维的数目;
randn(d0, d1, ..., dn)
6. 对一个序列内部元素重排:x 必须为数组
shuffle(x)