亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實現(xiàn)隨機漫步的詳細過程

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

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

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

1.  創(chuàng)建 RandomWalk 類

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

RandomWalk 類只包含兩個方法:

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

2.  選擇方向 

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

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

3.  繪制隨機漫步圖 

下面的代碼將隨機漫步的所有點都繪制出來:

from random import choice
import matplotlib.pyplot as plt
 
class RandomWalk:
    '''一個生成隨機漫步數(shù)據(jù)的類'''
 
    def __init__(self, num_points = 5000):
        '''初始化隨機漫步的屬性'''
 
        self.num_points = num_points
 
        # 所有隨機漫步都使于(0,0)
        self.x_values = [0]
        self.y_values = [0]
 
    def fill_walk(self):
        '''計算隨機漫步包含所有的點'''
 
        # 不斷漫步,直到列表達到指定的長度
        while len(self.x_values) < self.num_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
 
            # 拒絕原地踏步
            if x_step == 0 and y_step == 0:
                continue
 
            # 計算下一個點的 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)建一個 RandomWalk 實例
random_wander = RandomWalk()
random_wander.fill_walk()
 
# 將所有的點都繪制出來
plt.style.use('classic')
(fig,ax) = plt.subplots()
ax.scatter(random_wander.x_values, random_wander.y_values, s = 15)
plt.show()

4.  總結 

這篇文章主要講解了隨機漫步相關知識點。

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

相關文章

  • Python使用Gradio實現(xiàn)免費的內網穿透

    Python使用Gradio實現(xiàn)免費的內網穿透

    內網穿透是一種將內部網絡服務暴露到公共網絡的技術,可以讓外部用戶訪問內部網絡上的服務,本文將介紹如何使用Gradio實現(xiàn)免費的內網穿透,需要的可以參考下
    2024-03-03
  • Python讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實例講解)

    Python讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實例講解)

    下面小編就為大家?guī)硪黄狿ython讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Python測試網絡連通性示例【基于ping】

    Python測試網絡連通性示例【基于ping】

    這篇文章主要介紹了Python測試網絡連通性,結合實例形式分析了Python通過發(fā)送ping請求測試網絡連通性相關操作技巧,需要的朋友可以參考下
    2018-08-08
  • PyTorch模型創(chuàng)建與nn.Module構建

    PyTorch模型創(chuàng)建與nn.Module構建

    這篇文章主要為大家介紹了PyTorch模型創(chuàng)建與nn.Module構建示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 一文詳解NumPy數(shù)組迭代與合并

    一文詳解NumPy數(shù)組迭代與合并

    NumPy?數(shù)組迭代是訪問和處理數(shù)組元素的重要方法,它允許您逐個或成組地遍歷數(shù)組元素,NumPy?提供了多種函數(shù)來合并數(shù)組,用于將多個數(shù)組的內容連接成一個新數(shù)組,本文給大家詳細介紹了NumPy數(shù)組迭代與合并,需要的朋友可以參考下
    2024-05-05
  • 詳解pandas中MultiIndex和對象實際索引不一致問題

    詳解pandas中MultiIndex和對象實際索引不一致問題

    這篇文章主要介紹了詳解pandas中MultiIndex和對象實際索引不一致問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python?實時獲取kafka消費隊列信息示例詳解

    python?實時獲取kafka消費隊列信息示例詳解

    這篇文章主要介紹了python實時獲取kafka消費隊列信息,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • python的?PyPDF2實現(xiàn)pdf文件切割和合并

    python的?PyPDF2實現(xiàn)pdf文件切割和合并

    大家好,本篇文章主要講的是python的?PyPDF2實現(xiàn)pdf文件切割和合并,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 分享四個python接口常用封裝函數(shù)

    分享四個python接口常用封裝函數(shù)

    這篇文章主要給大家分享的是分享四個python接口常用封裝函數(shù),文章基于python的相關資料展開詳細的內容介紹,需要的小伙伴可以參考一下
    2022-04-04
  • python模擬點擊網頁按鈕實現(xiàn)方法

    python模擬點擊網頁按鈕實現(xiàn)方法

    在本篇文章里小編給大家整理的是一篇關于python模擬點擊網頁按鈕實現(xiàn)方法,需要的朋友們可以參考下。
    2020-02-02

最新評論