竹内纱里奈和大战黑人_欧美成人黄色小视频_91福利影视_欧美在线观看视频网站_h色网站免费观看_97综合

極客小將

您現(xiàn)在的位置是:首頁 » python編程資訊

資訊內(nèi)容

python隨機漫步講解

極客小將2021-01-15-
簡介免費學(xué)習(xí)推薦:python視頻教程隨機漫步這次我們將使用python生成隨機漫步數(shù)據(jù),然后用matplotlib的方式將這些數(shù)據(jù)呈現(xiàn)出來。隨機漫步每次行走都完全是隨機的,沒有明確的方向,結(jié)果是由一系列隨機決策決定的。你可以這樣認為,隨機漫步就是螞蟻在暈頭轉(zhuǎn)向的情況下,每次都沿隨機的方向所經(jīng)過的路徑。

極客小將版權(quán)所有。

dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

免費學(xué)習(xí)推薦:python視頻教程dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

隨機漫步dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

這次我們將使用python生成隨機漫步數(shù)據(jù),然后用matplotlib的方式將這些數(shù)據(jù)呈現(xiàn)出來。
隨機漫步每次行走都完全是隨機的,沒有明確的方向,結(jié)果是由一系列隨機決策決定的。你可以這樣認為,隨機漫步就是螞蟻在暈頭轉(zhuǎn)向的情況下,每次都沿隨機的方向所經(jīng)過的路徑。dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

創(chuàng)建RandomWalk()類dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

為了模擬隨機漫步,我們創(chuàng)建一個RandownWalk的類,它隨機選擇前進的方向。這個類需要三個屬性,其中一個是存儲隨機漫步次數(shù)的變量,其他兩個是列表,分別存儲隨機漫步經(jīng)過的每個點的x坐標(biāo)和y坐標(biāo)。
RandomWalk類只包含兩個方法,init()和fill_walk(),其中后者計算隨機漫步經(jīng)過的所有點,下面是__init__():dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

from random import choiceclass RandomWalk(): """一個生成隨機漫步數(shù)據(jù)的類""" def __init__(self, number_points=5000): """初始化隨機漫步的屬性""" self.number_points = number_points # 所有隨機漫步都始于(0,0) self.x_values = [0] self.y_values = [0]

為做出隨機決策,我們將所有可能的選擇都存儲到一個列表中,并在每次做出決策時都使用choice()來決定使用哪種選擇,然后我們將隨機漫步的默認點數(shù)設(shè)置為5000,然后我們創(chuàng)建了兩個用于存儲x值和y值的列表,并讓每次漫步都是從(0,0)開始出發(fā)。dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

選擇方向dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

def fill_walk(self): """計算隨機漫步中包含的所有點""" # 不斷漫步,直到列表達到指定的長度 while len(self.x_values) < self.number_points: # 決定前進方向以及沿這個方向前進的距離 x_direction = choice([1, -1]) x_distance = choice([0, 1, 2, 3, 4]) x_step = x_direction * x_distance y_direction = choice([1, -1]) y_distance = choice([0, 1, 2, 3, 4]) y_step = y_direction * y_distance # 計算下一個點的x和y值 next_x = self.x_values[-1] + x_step next_y = self.y_values[-1] + y_step self.x_values.append(next_x) self.y_values.append(next_y)

我們建立了一個循環(huán),這個循環(huán)不斷進行,直到漫步包含所有需數(shù)量的點。這個方法的主要部分告訴python如何模擬四種漫步?jīng)Q定:向左走還是向右走?向上走還是向下走?沿著指定的方向走多遠?
我們使用choice([1, -1])給x_direction選擇一個值,結(jié)果要么是表示向右走的1,要么是表示向左走的-1,接下來choice([0, 1, 2, 3, 4])隨機選擇一個0~4之間的數(shù),告訴python沿著指定方向走多遠。
我們將移動方向乘以移動距離,以確定沿x軸和y軸移動的距離。如果x_step為正,就將向右移動,為負向左移動,而為0將垂直移動,y_step為正向上移動,為負向下移動,為0則水平移動,如果兩個都為0那么就以為著在原地踏步,我們拒絕這種情況,接著執(zhí)行下一次循環(huán)。
為獲取隨機漫步的下一個點的x值,我們將x_step和x_values的**后一個值相加,對于y值也做同樣的處理。獲得下一個點的x值和y值之后,我們將它分別附加到列表x_values和y_values的末尾。dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

繪制隨機漫步圖dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

我們將上面創(chuàng)建RandomWalk類的py文件命名為random_walk.py。
下面的代碼將隨機漫步的所有點都繪制出來:dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

import matplotlib.pyplot as pltfrom random_walk import RandomWalk# 創(chuàng)建一個RandWalk實例,并將其包含的點都繪制出來rw = RandomWalk(5000)rw.fill_walk()plt.scatter(rw.x_values, rw.y_values, s=15)plt.show()

我們首先導(dǎo)入了模塊pyplot和RandomWalk類,然后創(chuàng)建了一個RandomWalk實例,并將其存儲到rw中,再調(diào)用fill_walk(),下圖就是顯示了包含了5000個點的隨機漫步圖。dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

模擬多次隨機漫步dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

每次隨機漫步都不相同,因此探索可能生成的各種模式很有趣。在不多次運行程序的情況下使用前面的代碼模擬多次隨機漫步,一種辦法就是將前面的代碼放進一個while循環(huán)中,如下所示:dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True: # 創(chuàng)建一個RandWalk實例,并將其包含的點都繪制出來 rw = RandomWalk(5000) rw.fill_walk() plt.scatter(rw.x_values, rw.y_values, s=1) plt.show() keep_running = input('Make another walk? (y/n) : ') if keep_running == 'n': break

這些代碼模擬一次隨機漫步,如果你輸入y則再繼續(xù)模擬生成一次隨機漫步,輸入n的話就退出程序了。dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

給點著色dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

我們將使用顏色映射出漫步中個點的先后順序,并刪除各個點的黑色輪廓,讓他們顏色更加明顯。為根據(jù)漫步中各點的先后順序進行著色,我們傳遞參數(shù)c,并設(shè)置一個列表,其中包含各點的先后順序。由于這些點都是按順序繪制的,因此參數(shù)c指定的列表只需包含數(shù)字1~5000即可。如下所示:dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True: # 創(chuàng)建一個RandWalk實例,并將其包含的點都繪制出來 rw = RandomWalk(5000) rw.fill_walk() point_numbers = list(range(rw.number_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=1) plt.show() keep_running = input('Make another walk? (y/n) : ') if keep_running == 'n': break

我們使用range生成了一個數(shù)字列表,其中包含的數(shù)字與漫步包含的點數(shù)相同。接下來,我們將這個列表存儲到point_numbers中,以方便使用它設(shè)置每個漫步點的顏色。我們將每個參數(shù)c設(shè)置為point_numbers,指定顏色映射為藍色,并傳遞實參edgecolors以刪除每個點周圍的輪廓。**終的隨機漫步圖由淺藍色漸變?yōu)樯钏{色。如下圖所示:
dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

重新繪制起點和終點dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

除了給隨機漫步各個點著色,以指出他們的先后順序外,如果還能呈現(xiàn)隨機漫步的終點和起點就更好了。為此,可在繪制隨機漫步圖后重新繪制隨機漫步的起點和終點。我們讓起點和終點變得更大,并顯示為不同的顏色,以突出它們,如下所示:dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True: # 創(chuàng)建一個RandWalk實例,并將其包含的點都繪制出來 rw = RandomWalk(5000) rw.fill_walk() point_numbers = list(range(rw.number_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=1) # 突出起點和終點 plt.scatter(0, 0, c='green', edgecolors='none', s=100) plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100) plt.show() keep_running = input('Make another walk? (y/n) : ') if keep_running == 'n': break

dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

為突出起點,我們使用綠色繪制點(0,0),并使其比其它點大。為突出終點,我們在漫步包含的**后一個x值和y值處繪制一個點,使其為紅色,并比其它點大。運行代碼,將準(zhǔn)確知道每次隨機漫步的起點和終點。dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

隱藏坐標(biāo)軸dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

下面來隱藏坐標(biāo)軸,以免我們注意點是坐標(biāo)軸而不是隨機漫步路徑。要隱藏坐標(biāo)做代碼如下:dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

# 隱藏坐標(biāo)軸plt.axes().get_xaxis().set_visible(False)plt.axes().get_yaxis().set_visible(False)

為修改坐標(biāo)軸,使用函數(shù)plt.axes()來將每條坐標(biāo)軸的可見性設(shè)置為False。圖如下:
dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

相關(guān)免費學(xué)習(xí)推薦:python教程(視頻)dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

以上就是python隨機漫步講解的詳細內(nèi)容,更多請關(guān)注少兒編程網(wǎng)其它相關(guān)文章!dsI少兒編程網(wǎng)-Scratch_Python_教程_免費兒童編程學(xué)習(xí)平臺

預(yù)約試聽課

已有385人預(yù)約都是免費的,你也試試吧...

主站蜘蛛池模板: 国产精品一区二区三区在线免费观看 | 天天操狠狠操 | 亚洲一区二区三区久久 | 国产精品久久久一区二区三区 | 黄色成人在线 | 91在线视频导航 | 国产精品一区二区三区免费视频 | 免费aaa级毛片在线视频 | 亚洲欧美中文日韩在线v日本 | 国产精选一区二区 | 成人在线视频网址 | 五月花成人网 | 亚洲国产精品成人 | 久久一视频 | 亚洲精品一区二区三区中文字幕 | 精品欧美国产 | 欧美视频二区 | 日本免费高清一区二区 | 国内最真实的xxxx人伦 | 日韩欧美一区二区三区免费观看 | 亚洲精品久久 | 欧美天堂在线 | 国产激情网址 | 久久久网站 | 在线不卡一区 | 99re6这里只有精品视频在线观看 | 国产在线啪 | 美女激情av| 日韩精品一区二区在线 | 国产最新视频 | 黄色国产在线观看 | 久久国产精品免费 | 久久久午夜精品 | 日韩三级精品 | 麻豆久久 | 色视在线 | 91精品亚洲 | a久久天堂国产毛片精品 | 国产精品av一区二区三区 | 黄色av网站在线免费观看 | 亚洲午夜精品视频 |