先放官方手册链接…
https://numpy.org/doc/stable/reference/random/index.html?highlight=random#module-numpy.random
环境
import numpy as np
import numpy.random as rd #问就是懒...
import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats
常用功能小结
rd.seed(a) #控制每次随机数结果一致,便于复现
rd.rand(a,b) #最简单常用的生成随机数的功能。生成 a 列 b 行在[0,1)内均匀分布的随机数
rd.uniform(a,b,size) #.rand的自定上下限版本,生成size个在[a,b)范围内均匀分布的随机数
rd.randint(a,b,size) #.rand的自定上下限整数版本,生成size个在[a,b)范围内均匀分布的随机*整*数
rd.randn(a,b) #.rand的标准正态分布版本,好用!a,b只限制生成随机数的shape
rd.normal(μ,σ,size) #相比于.randn可以自定义均值 μ 和 σ
rd.poisson(a,size) #有放回抽样。a是单位时间/空间下期望事件发生的概率
rd.hypergeometric(ngood, nbad, nsample, size) #无放回抽样(怒 为什么概率论考试不能带电脑啊)。
#小球问题为例,箱子中有3个红球(ngood=3)和7个蓝球(nbad=7),每次取2个球(nsample=2)
#问取到至少一个红球的期望: np.sum(rd.hypergeometric(3,7,2,10000)>=1)/10000 = 0.5335
以及一个自己不太常用但很有意思的 rd.choice,手册:
https://numpy.org/doc/stable/reference/random/generated/numpy.random.choice.html?highlight=choice#numpy.random.choice
test = rd.choice(['a','b','c','d'],size = 100000, p=[0.1,0.1,0.5,0.3])
df_test = pd.DataFrame(data={'result':test})
df_test.groupby('result')['result'].count()/100000
# result
# a 0.09998
# b 0.09983
# c 0.49971
# d 0.30048
# Name: result, dtype: float64