官术网_书友最值得收藏!

2.3 案例:隨機游走軌跡模擬

隨機游走(Random Walk)又稱隨機游動或隨機漫步,與很多自然、社會現(xiàn)象相關(guān)。在自然科學(xué)研究中,隨機游走是擴散過程的基礎(chǔ),廣泛地用于對物理和化學(xué)粒子擴散現(xiàn)象的模擬。在實際生活中,人們用隨機游走描述花粉的布朗運動、證券的漲跌等。

對隨機游走過程的理論研究和計算機模擬已成功地應(yīng)用于數(shù)學(xué)、物理、化學(xué)和經(jīng)濟等學(xué)科,在互聯(lián)網(wǎng)信息檢索、圖像分割等領(lǐng)域的應(yīng)用也取得了很好的效果。本節(jié)將NumPy的隨機數(shù)生成函數(shù)與ndarray結(jié)合,模擬物體在二維平面上隨機游走的過程。

假設(shè)物體初始位置處在二維坐標系的(0,0)位置,每步隨機地沿著x軸方左移或右移一個單位,同時沿著y軸方左移或右移一個單位,左移或右移的概率是相等的。

1.模擬每步游走方向

為了模擬物體在x軸和y軸上每步的隨機運動,首先創(chuàng)建一個2×n的二維數(shù)組,行序0表示x軸上的運動,行序1表示y軸上的運動,n為移動總步數(shù)。數(shù)組元素取值為-1或1,1表示向正向移動一個單位,-1表示負向移動一個單位。

x軸、y軸不同方向上的移動概率相同,可以使用randint()函數(shù)在兩個整數(shù)之間生成2n個隨機數(shù)。由于randint()函數(shù)只能在連續(xù)整數(shù)范圍內(nèi)生成隨機數(shù),因此先生成由0和1組成的隨機數(shù)組,然后再將所有的0替換為-1。

假設(shè)某次隨機游走了10步,用randint()函數(shù)隨機生成每步走的方向,結(jié)果可以使用一個2×10的二維數(shù)組記錄。

NumPy提供where(condition[, x, y])函數(shù)實現(xiàn)數(shù)組元素的條件賦值,參數(shù)condition是條件表達式,如果condition結(jié)果為True,則返回x,否則返回y。x、y可以是數(shù)組,也可以是標量。

這里where()函數(shù)判斷rndwlk數(shù)組每個元素值和0的關(guān)系,如果大于0,則該元素值賦為1,否則賦為-1。

2.計算每步游走后的位置

rndwlk記錄了物體每步沿著x軸、y軸運動的方向,計算第i步所處的位置只需分別累計從第1步到第i步沿x軸、y軸移動單位總和即可。ndarray的聚集函數(shù)cumsum()就可以實現(xiàn)此功能。

cumsum()函數(shù)按行進行累加,即每行第i列的值為原數(shù)組0~i列值的和,數(shù)組變量position保存了每步結(jié)束后物體在二維平面上的位置。

3.計算每步游走后到原點的距離

利用算術(shù)運算符和通用函數(shù),可以算出物體在每步結(jié)束后到原點的距離。計算得到的浮點數(shù)小數(shù)位數(shù)太長,可以使用np.set_printoptions()函數(shù)設(shè)置顯示的小數(shù)位數(shù)。

對數(shù)組dists統(tǒng)計物體距離原點的最大值、最小值和平均值。

統(tǒng)計物體游走過程中離原點大于平均距離的次數(shù)。

dists>dists.mean()生成一個一維的布爾類型數(shù)組,大于平均值的位置為True,否則為False。當sum()函數(shù)求和時,True的值視為1,F(xiàn)alse為0,True的個數(shù)也就是超出平均距離的次數(shù)。

4.繪圖展示游走軌跡

將position中的位置數(shù)據(jù)標識在二維坐標系上,即可展示隨機游走的軌跡,如圖2-2所示。繪制圖形函數(shù)的使用方法見第4章。

圖2-2 二維平面上一次隨機漫步的軌跡圖

思考與練習(xí)

1.將隨機游走的步數(shù)增加到100步,計算物體最終到原點的距離。

2.重復(fù)多次隨機游走過程,物體到原點距離的變化趨勢是什么。

主站蜘蛛池模板: 华坪县| 东兴市| 自贡市| 东乡县| 田阳县| 顺昌县| 明水县| 黑河市| 大庆市| 波密县| 资中县| 泾川县| 仁化县| 武宁县| 扬州市| 扶风县| 望奎县| 察隅县| 肇源县| 韩城市| 杭州市| 同德县| 遂宁市| 浙江省| 和平县| 霍城县| 铁岭市| 资中县| 梁河县| 林甸县| 邵武市| 景宁| 同江市| 洞头县| 东乡县| 内黄县| 扶风县| 志丹县| 库尔勒市| 尉氏县| 玉溪市|