標籤:

復盤:隨機漫步

案例:從0開始,步長1和-1出現的概率相等。通過內置的random模塊以純python的方式實現1000步的隨機漫步:

在In[1]:中代碼random.randint()表示隨機生一個整數int類型,可以指定這個整數的範圍,同樣有上限和下限值。

從代碼運行的結果看出,隨機漫步就是把各步數的累計和用一個數組運算來實現。

我用np.random模塊一次性隨機產生1000個「擲硬幣的結果,將其分別設置為1或-1,然後計算累計和:

可以求出walk_2中的最大值和最小值:

假設我們要知道本次隨機漫步需要多久才能距離初始0點至少10步遠(任一方向均可)。np.abs(walk_2) >= 10 可以得到一個布爾型數組,它表示的是距離是否達到或超過10,使用argmax函數獲取第一個10或-10的索引。argmax返回的是該布爾型數組第一個最大值的索引(True就是最大值):

一次模擬多個隨機漫步

使用numpy.random函數傳入一個二元元組生成一個二維數組,然後一次性計算5000個隨機漫步過程(一行一個)的累積和:

計算所有漫步過程的最大值和最小值:

計算30或-30的最小穿越時間,使用any函數檢查是否5000個過程都達到30:

利用布爾型數組選出穿越30或-30的隨機漫步(行),並調用argmax函數在軸1上獲取穿越時間:

推薦閱讀:

Python 2.7安裝常用的科學計算分析包
numpy和pandas入門
python與numpy使用的一些小tips(2)

TAG:Python | numpy |