Python 的隨機漫步
今天學習了有關Python 的隨機漫步,詳細筆記如下:
我們將使用Python來生成隨機漫步數據,再使用matplotlib將這些數據呈現出來。隨機漫步的路徑是這樣的:每次行走都完全是隨機的,沒有明確的方向,結果是由一系列隨機決策決定的。
1.創建RandomWalk() 類
為模擬隨機漫步,我們將創建一個名為RandomWalk 的類,它隨機地選擇前進方向。這個類需要三個屬性,其中一個是存儲隨機漫步次數的變數,其他兩個是列表,分別存儲隨機漫步經過的每個點的 x 和 y 坐標。
其中RandomWalk 類只包含兩個方法:__init__() 和fill_walk() ,其中後者計算隨機漫步經過的所有點。
為做出隨機決策,我們將所有可能的選擇都存儲在一個列表中,並在每次做決策時都使用choice() 來決定使用哪種選擇。
類RandomWalk()是在random_walk.py模塊中,具體代碼如下:
代碼第7行中num_points存儲的是存儲隨機漫步次數,在這裡設定默認值為5000;
第12和13行代碼中self.x_values和self.y_values這兩個列表裡放的是點的x、y坐標,這裡設定默認是從原點(0,0)開始;
2.選擇方向
我們將使用fill_walk() 來生成漫步包含的點,並決定每次漫步的方向,如下所示。
第19行代碼中我們建立了一個循環,這個循環不斷運行,直到漫步包含所需數量的點。這個方法的主要部分告訴Python如何模擬四種漫步決定:向右走還是向左走?沿指定的方向走多遠?向上走還是向下走?沿選定的方向走多遠?
第21行我們使用choice()函數,choice() 方法返回一個列表,元組或字元串的隨機項,意思就是每次從這個列表裡隨意選一個。
在這裡choice([1, -1]) 給x_direction 選擇一個值,結果要麼是表示向右走的1,要麼是表示向左走的-1。接下來,choice([0, 1, 2, 3, 4]) 隨機地選擇一個0~4之間的整數,告訴Python 沿指定的方向走多遠(x_distance )。(通過包含0,我們不僅能夠沿兩個軸移動,還能夠沿y 軸移動。)
代碼的23和27行描述步數的計算方法,我們將移動方向乘以移動距離,以確定沿 x 和 y 軸移動的距離。如果x_step 為正,將向右移動,為負將向左移動,而為零將垂直移動;如果y_step 為正,就意味著向上移動,為負意味著向下移動,而為零意味著水平移動。如果x_step 和y_step 都為零,則意味著原地踏步,我們拒絕這樣的情況,接著執行下一次循環。
第34到38行,為獲取漫步中下一個點的 x 值,我們將x_step 與x_values 中的最後一個值相加,其中x_values[-1]表示查找列表x_values中最後一個數字,把這個數字加上步數得出下一個點的x坐標,對於 y 值也做相同的處理。獲得下一個點的 x 值和 y 值後,我們將它們分別附加到列表x_values 和y_values 的末尾。
3.繪製隨機漫步圖
下面的代碼將隨機漫步的所有點都繪製出來:
我們首先導入了模塊pyplot 和RandomWalk 類,然後創建了一個RandomWalk 實例(第7行代碼),並將其存儲到rw 中,再調用fill_walk() 。
在第9行代碼,我們將隨機漫步包含的x 和 y 值傳遞給scatter() ,函數scatter()利用提供的x和y坐標進行畫圖,在這裡我們設定點的大小s=5。
兩次運行結果如下:
推薦閱讀:
※撰寫數據分析報告的常用套路
※《新的開始—通往數據分析師之路》
※如何看待中國 2017 年第一季度 GDP 同比增長 6.9%?
※python數據建模常用可視化總結