最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)隨機(jī)漫步的詳細(xì)過程

 更新時(shí)間:2023年03月07日 09:55:43   作者:Aperion  
隨機(jī)漫步顧名思義每一步都是隨機(jī)的,假設(shè)有一個(gè)點(diǎn),下一步往哪里走,走多遠(yuǎn),這些都沒有明確的表示,完全是隨機(jī)的,最后走到哪里,是由一系列隨機(jī)決策決定的,這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)隨機(jī)漫步的相關(guān)資料,需要的朋友可以參考下

本篇博客將使用 Python 來 生成隨機(jī)漫步數(shù)據(jù),再使用 Matplotlib 庫,將以引人注目的方式將這些數(shù)據(jù)呈現(xiàn)出來。

隨機(jī)漫步 顧名思義就是隨機(jī)走出的步伐,它是這樣行走得到的路徑:每次行走都是完全隨機(jī)的、沒有明確的方向,結(jié)果是由一系列隨機(jī)決策決定的。我們可以將隨機(jī)漫步看作是 螞蟻在暈頭轉(zhuǎn)向 的情況下,每次都沿隨機(jī)的方向前行所經(jīng)過的路徑。 

1.  創(chuàng)建 RandomWalk 類

為模擬隨機(jī)漫步,首先創(chuàng)建一個(gè)名為 RandomWalk  的類,其作用是 隨機(jī)的選擇前進(jìn)方向。這個(gè)類需要三個(gè)屬性:一個(gè)是 存儲(chǔ)隨機(jī)漫步次數(shù)的變量,其他兩個(gè)是 列表,分別存儲(chǔ)隨機(jī)漫步經(jīng)過的每個(gè)點(diǎn)的 x 坐標(biāo)y 坐標(biāo)

RandomWalk 類只包含兩個(gè)方法:

  • 方法 __init__ () ,初始化屬性
  • 方法 fill_walk () ,計(jì)算隨機(jī)漫步經(jīng)過的所有點(diǎn)
from random import choice
 
class RandomWalk:
    '''一個(gè)生成隨機(jī)漫步數(shù)據(jù)的類'''
 
    def __init__(self, num_points = 500):
        '''初始化隨機(jī)漫步的屬性'''
 
        self.num_points = num_points
 
        # 所有隨機(jī)漫步都使于(0,0)
        self.x_values = [0]
        self.y_values = [0]
  • 為做出 隨機(jī)決策,將 所有可能的選擇 都存儲(chǔ)在一個(gè)列表中,并在每次決策時(shí),都使用模塊 random 中的 choice () 來決定使用哪種選擇 。
  • 將隨機(jī)漫步包含的默認(rèn)點(diǎn)數(shù)設(shè)置為 5000,這個(gè)數(shù)大到 足以生成有趣的模式,又小到可確保能夠 快速地模擬隨機(jī)漫步。
  • 創(chuàng)建兩個(gè)用于存儲(chǔ) x 值和 y 值的列表,并讓每次漫步都從 點(diǎn)(0,0)出發(fā)。

2.  選擇方向 

我們將使用方法 fill_walk() 來生成 漫步包含的點(diǎn),并 決定每次漫步的方向。 

import random
 
def fill_walk(self):
    '''計(jì)算隨機(jī)漫步包含的所有點(diǎn)'''
 
    # 不斷漫步,直到列表達(dá)到指定的長(zhǎng)度
    while len(self.x_values) < self.num_points:
 
        # 決定前進(jìn)方向以及沿這個(gè)方向前進(jìn)的距離
        x_direction = random.choice([1,-1])
        x_distance = random.choice([0,1,2,3,4])
        x_step = x_direction * x_distance
 
        y_direction = random.choice([1,-1])
        y_distance = random.choice([0,1,2,3,4])
        y_step = y_direction * y_distance
 
        # 拒絕原地踏步
        if x_step == 0 and y_step == 0:
            continue
 
        # 計(jì)算下一個(gè)點(diǎn)的 x 值和 y 的值
        x = self.x_values[-1] + x_step
        y = self.y_values[-1] + y_step
 
        self.x_values.append(x)
        self.y_values.append(y)
  • 先建立一個(gè)循環(huán),它不斷運(yùn)行,直到漫步包含所需的點(diǎn)數(shù)。方法 fill_walk()的主要部分告訴 Python 如何模擬四種漫步?jīng)Q定:向右走還是向左走?沿指定的方向走多遠(yuǎn)?向上走還是向下走?沿指定的方向走多遠(yuǎn)?
  •  使用 choice([-1,-1]) 給 x_direction 選擇一個(gè)值,結(jié)果要么是表示向右走的 1,要么是表示向左走的 -1。接下來,choice([0,1,2,3,4]) 隨機(jī)的選擇一個(gè) 0~4 的整數(shù),告訴 Python 沿指定方向走多遠(yuǎn)(x_distance)。通過包含 0 ,不僅能夠同時(shí)沿兩個(gè)軸移動(dòng),還能夠只沿一個(gè)軸移動(dòng)。
  • 將 移動(dòng)方向乘以移動(dòng)距離,確定沿 x 軸和 y 軸移動(dòng)的距離。如果 x_step 為正將向右移動(dòng),為負(fù)將向左移動(dòng),為零將垂直移動(dòng);如果 y_step 為正將向上移動(dòng),為負(fù)將向下移動(dòng),為零將水平移動(dòng)。如果 x_step 和 y_step 都為零,則意味著原地踏步。我們拒絕這樣的情況,接著執(zhí)行下一次循環(huán)。
  • 為獲取漫步中下一個(gè)點(diǎn)的 x 的值,將 x_step 和 x_values 中的最后一個(gè)值相加,對(duì) y 值也做相同的處理。獲得下一個(gè)點(diǎn)的 x 值和 y 值后,將它們分別附件到列表 x_values 和 y_values 的末尾。

3.  繪制隨機(jī)漫步圖 

下面的代碼將隨機(jī)漫步的所有點(diǎn)都繪制出來:

from random import choice
import matplotlib.pyplot as plt
 
class RandomWalk:
    '''一個(gè)生成隨機(jī)漫步數(shù)據(jù)的類'''
 
    def __init__(self, num_points = 5000):
        '''初始化隨機(jī)漫步的屬性'''
 
        self.num_points = num_points
 
        # 所有隨機(jī)漫步都使于(0,0)
        self.x_values = [0]
        self.y_values = [0]
 
    def fill_walk(self):
        '''計(jì)算隨機(jī)漫步包含所有的點(diǎn)'''
 
        # 不斷漫步,直到列表達(dá)到指定的長(zhǎng)度
        while len(self.x_values) < self.num_points:
 
            # 決定前進(jìn)的方向以及沿著這個(gè)方向前進(jìn)的距離
            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
 
            # 拒絕原地踏步
            if x_step == 0 and y_step == 0:
                continue
 
            # 計(jì)算下一個(gè)點(diǎn)的 x 值和 y 值
            x = self.x_values[-1] + x_step
            y = self.y_values[-1] + y_step
 
            self.x_values.append(x)
            self.y_values.append(y)
 
# 創(chuàng)建一個(gè) RandomWalk 實(shí)例
random_wander = RandomWalk()
random_wander.fill_walk()
 
# 將所有的點(diǎn)都繪制出來
plt.style.use('classic')
(fig,ax) = plt.subplots()
ax.scatter(random_wander.x_values, random_wander.y_values, s = 15)
plt.show()

4.  總結(jié) 

這篇文章主要講解了隨機(jī)漫步相關(guān)知識(shí)點(diǎn)。

到此這篇關(guān)于Python實(shí)現(xiàn)隨機(jī)漫步的文章就介紹到這了,更多相關(guān)Python隨機(jī)漫步內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • peewee創(chuàng)建連接前的前置操作wireshark抓包實(shí)現(xiàn)

    peewee創(chuàng)建連接前的前置操作wireshark抓包實(shí)現(xiàn)

    這篇文章主要為大家介紹了peewee創(chuàng)建連接前的前置操作wireshark?抓包實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • python基礎(chǔ)之貪婪模式與非貪婪模式

    python基礎(chǔ)之貪婪模式與非貪婪模式

    這篇文章主要介紹了python貪婪模式與非貪婪模式 ,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • pycharm+django創(chuàng)建一個(gè)搜索網(wǎng)頁實(shí)例代碼

    pycharm+django創(chuàng)建一個(gè)搜索網(wǎng)頁實(shí)例代碼

    這篇文章主要介紹了pycharm+django創(chuàng)建一個(gè)搜索網(wǎng)頁實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 分享4個(gè)方便且好用的Python自動(dòng)化腳本

    分享4個(gè)方便且好用的Python自動(dòng)化腳本

    自動(dòng)化測(cè)試是把以人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程,直白的就是為了節(jié)省人力、時(shí)間或硬件資源,提高測(cè)試效率,這篇文章主要給大家分享介紹了3個(gè)方便且好用的Python自動(dòng)化腳本,需要的朋友可以參考下
    2022-02-02
  • pycharm配置Qt?Designer工具的圖文教程

    pycharm配置Qt?Designer工具的圖文教程

    本文主要介紹了pycharm配置Qt?Designer工具的圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • django框架F&Q 聚合與分組操作示例

    django框架F&Q 聚合與分組操作示例

    這篇文章主要介紹了django框架F&Q 聚合與分組操作,結(jié)合實(shí)例形式詳細(xì)分析了Django框架查詢條件取對(duì)象中某列值、構(gòu)建搜索條件以及聚合查詢等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • python繪制雷達(dá)圖實(shí)例講解

    python繪制雷達(dá)圖實(shí)例講解

    在本篇文章里小編給大家整理了一篇關(guān)于python繪制雷達(dá)圖實(shí)例講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • 在VSCode中配置Python開發(fā)環(huán)境的詳細(xì)教程

    在VSCode中配置Python開發(fā)環(huán)境的詳細(xì)教程

    Visual Studio Code(簡(jiǎn)稱VSCode)以其強(qiáng)大的功能和靈活的擴(kuò)展性,成為了許多開發(fā)者的首選,本文將詳細(xì)介紹如何在VSCode中配置Python開發(fā)環(huán)境,需要的朋友可以參考下
    2025-04-04
  • Python3匿名函數(shù)lambda介紹與使用示例

    Python3匿名函數(shù)lambda介紹與使用示例

    這篇文章主要給大家介紹了關(guān)于Python3匿名函數(shù)lambda與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • numpy 矩陣形狀調(diào)整:拉伸、變成一位數(shù)組的實(shí)例

    numpy 矩陣形狀調(diào)整:拉伸、變成一位數(shù)組的實(shí)例

    這篇文章主要介紹了numpy 矩陣形狀調(diào)整:拉伸、變成一位數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評(píng)論

左云县| 阿克陶县| 黔西| 汤阴县| 武威市| 庆城县| 西贡区| 虞城县| 云和县| 宣城市| 铅山县| 定南县| 蒙阴县| 固镇县| 凤城市| 东乡族自治县| 沁阳市| 安平县| 扎囊县| 和平县| 乌拉特前旗| 萍乡市| 东宁县| 名山县| 阜新市| 西华县| 唐海县| 上饶县| 大兴区| 阳东县| 哈密市| 沈丘县| 巫山县| 庆城县| 左云县| 徐汇区| 襄城县| 新邵县| 桓仁| 土默特左旗| 正安县|