np的random模塊對Python內(nèi)置random進行補充,增加了一些用于高效生成多種概率分布的樣本值的函數(shù)
函數(shù) | 作用 |
---|---|
seed | 隨機數(shù)種子 |
permutation | 序列的隨機排序 |
shuffle | 重新排序 |
rand | 即均勻分布的樣本值[0,1) |
randint | 給定上下限范圍取一個整數(shù) |
randn | 正態(tài)分布的樣本值 |
binomial | 二項分布的樣本值 |
normal | 正態(tài)分布的樣本值 |
beta | Beta分布的樣本值 |
chisquare | 卡方分布的樣本值 |
gamma | gamma分布的樣本值 |
uniform | 產(chǎn)生在[0,1)中均勻分布的樣本值 |
范例 隨機漫步
模擬隨機漫步: 從0開始,步長為1或-1出現(xiàn)的概率相等.通過村Python的方式實現(xiàn)1000步的隨機漫步
import random
import matplotlib.pyplot as plt
position = 0
walk = [position]
steps = 1000
for i in range(steps):
step = 1 if random.randint(0,1) else -1
position += step
walk.append(position)
walk_hund = walk[:100]
xl = [i for i in range(100)]
plt.plot(xl,walk_hund)
使用np.random模塊一次性隨機參數(shù)1000個"投擲硬幣"的結(jié)構(gòu),硬幣的正反分別用1或-1表示
nsteps = 1000
draws = np.random.randint(0,2,size=nsteps)
steps = np.where(draws > 0, 1,-1)
walks = steps.cumsum()
walks
同時進行多個隨機漫步模擬
nsteps = 1000
nwalks = 5000
draws = np.random.randint(0,2,size=(nwalks,nsteps))
steps = np.where(draws > 0, 1,-1)
walks = steps.cumsum(1)
walks