Python-Random-Walk-Erklärung

coldplay.xixi
Freigeben: 2021-01-15 10:06:19
nach vorne
3753 Leute haben es durchsucht

Kostenlose Lernempfehlung:

Python-Random-Walk-ErklärungPython-Video-Tutorial Zufälliger Spaziergang Jeder Spaziergang ist völlig zufällig, ohne klare Richtung, und das Ergebnis wird durch eine Reihe zufälliger Entscheidungen bestimmt. Man kann es sich so vorstellen: Ein „Random Walk“ ist der Weg, den Ameisen jedes Mal in eine zufällige Richtung nehmen, wenn sie verwirrt sind.

Erstellen Sie die RandomWalk()-Klasse. Um einen zufälligen Spaziergang zu simulieren, erstellen wir eine RandownWalk-Klasse, die zufällig die Richtung für die Vorwärtsbewegung wählt. Diese Klasse erfordert drei Attribute, von denen eines eine Variable ist, die die Anzahl der Zufallswanderungen speichert, und die anderen beiden Listen sind, die die X-Koordinaten und Y-Koordinaten jedes von der Zufallswanderung passierten Punktes speichern. Die RandomWalk-Klasse enthält nur zwei Methoden, init

() und fill_walk(), wobei letztere alle beim Random Walk passierten Punkte berechnet, hier ist

:

from random import choiceclass RandomWalk():
    """一个生成随机漫步数据的类"""
    def __init__(self, number_points=5000):
        """初始化随机漫步的属性"""
        self.number_points = number_points        # 所有随机漫步都始于(0,0)
        self.x_values = [0]
        self.y_values = [0]
Nach dem Login kopieren
Um eine zufällige Entscheidung zu treffen, kombinieren wir alle möglichen Auswahlmöglichkeiten Speichern Sie es in einer Liste und verwenden Sie choice() jedes Mal, wenn eine Entscheidung getroffen wird, um zu entscheiden, welche Auswahl verwendet werden soll. Anschließend setzen wir die Standardanzahl der Punkte für die Zufallswanderung auf 5000 und erstellen dann zwei, um die x-Werte und A zu speichern Liste der y-Werte und lassen Sie jeden Spaziergang bei (0,0) beginnen.


Wählen Sie eine Richtung

    def fill_walk(self):
        """计算随机漫步中包含的所有点"""

        # 不断漫步,直到列表达到指定的长度
        while len(self.x_values) <strong>Wir erstellen eine Schleife, die so lange fortgesetzt wird, bis der Spaziergang die erforderliche Anzahl an Punkten erreicht hat. Der Hauptteil dieser Methode sagt Python, wie vier wandernde Entscheidungen simuliert werden sollen: Nach links oder rechts gehen? Nach oben oder nach unten? Wie weit entlang der angegebenen Richtung? </strong> Wir verwenden choice([1, -1]), um einen Wert für x_direction auszuwählen. Das Ergebnis ist entweder 1, was bedeutet, nach rechts zu gehen, oder -1, was bedeutet, nach links zu gehen. 3, 4]) Wählen Sie zufällig eine Zahl zwischen 0 und 4 aus und teilen Sie Python mit, wie weit es in die angegebene Richtung gehen soll.  Wir multiplizieren die Bewegungsrichtung mit der Bewegungsdistanz, um die entlang der x- und y-Achse zurückgelegte Distanz zu ermitteln. Wenn x_step positiv ist, bewegt es sich nach rechts, wenn es negativ ist, bewegt es sich nach links, und wenn es 0 ist, bewegt es sich vertikal. Wenn y_step positiv ist, bewegt es sich nach oben, wenn es negativ ist. es wird sich nach unten bewegen, und wenn es 0 ist, wird es sich horizontal bewegen. Wenn beide 0 sind, dann lehnen wir diese Situation ab und fahren mit dem nächsten Zyklus fort. <p> Um den x-Wert des nächsten Punkts im Random Walk zu erhalten, addieren wir den letzten Wert von x_step und x_values ​​und machen dasselbe für den y-Wert. Nachdem wir den X-Wert und den Y-Wert des nächsten Punkts erhalten haben, hängen wir ihn an das Ende der Listen x_values ​​​​bzw. y_values ​​​​an. <br><strong></strong>Zeichnen Sie ein Random-Walk-Diagramm<code>__init__()</code></p><p>Wir haben die oben für die RandomWalk-Klasse erstellte py-Datei random_walk.py benannt. </p> Der folgende Code zeichnet alle Punkte des Random Walk auf: <p></p><pre class="brush:php;toolbar:false">import matplotlib.pyplot as pltfrom random_walk import RandomWalk# 创建一个RandWalk实例,并将其包含的点都绘制出来rw = RandomWalk(5000)rw.fill_walk()plt.scatter(rw.x_values, rw.y_values, s=15)plt.show()
Nach dem Login kopieren
Wir haben zuerst das Modul pyplot und die RandomWalk-Klasse importiert, dann eine RandomWalk-Instanz erstellt, sie in rw gespeichert und dann fill_walk() aufgerufen, wie unten gezeigt. Es zeigt einen Zufall Laufdiagramm mit 5000 Punkten.


Simulieren Sie mehrere Random Walks

Jeder Random Walk ist anders, daher macht es Spaß, die verschiedenen Muster zu erkunden, die erzeugt werden können. Eine Möglichkeit, den vorherigen Code zu verwenden, um mehrere Random Walks zu simulieren, ohne das Programm mehrmals auszuführen, besteht darin, den vorherigen Code in eine While-Schleife zu setzen, wie unten gezeigt:

import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True:
    # 创建一个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
Nach dem Login kopieren
Diese Codes simulieren einen Random Walk, wenn Sie y eingeben, um mit der Simulation fortzufahren eine zufällige Wanderung, und geben Sie n ein, um das Programm zu beenden.

Färben Sie die Punkte ein

Wir werden Farbe verwenden, um die Reihenfolge der Punkte im Spaziergang abzubilden, und die schwarze Umrandung jedes Punktes löschen, um ihre Farben deutlicher zu machen. Um eine Farbe basierend auf der Reihenfolge der Punkte im Spaziergang zu erstellen, übergeben wir den Parameter c und legen eine Liste fest, die die Reihenfolge der Punkte enthält. Da diese Punkte der Reihe nach gezeichnet werden, muss die durch Parameter c angegebene Liste nur Zahlen von 1 bis 5000 enthalten. Wie unten gezeigt: Python-Random-Walk-Erklärung

import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True:
    # 创建一个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
Nach dem Login kopieren
Wir haben Range verwendet, um eine Zahlenliste zu erstellen, die die gleiche Anzahl an Punkten enthält wie der Spaziergang. Als nächstes speichern wir diese Liste in point_numbers, damit wir damit die Farbe jedes Gehpunkts festlegen können. Wir setzen jeden Parameter c auf point_numbers, geben als Farbkarte Blau an und übergeben das Argument „edgecolors“, um den Umriss um jeden Punkt zu entfernen. Das endgültige Random-Walk-Diagramm verläuft von Hellblau nach Dunkelblau. Wie im Bild unten gezeigt:

Zeichnen Sie den Start- und Endpunkt neu.

Zusätzlich zum Einfärben der Punkte des Zufallsgangs, um ihre Reihenfolge anzuzeigen, wäre es besser, wenn Sie den End- und Startpunkt des Zufallspfads festlegen würden Auch der Spaziergang kann angezeigt werden. Dazu können Sie nach dem Zeichnen des Irrfahrtsdiagramms die Start- und Endpunkte der Irrfahrt neu zeichnen. Wir haben die Start- und Endpunkte vergrößert und mit einer anderen Farbe versehen, um sie hervorzuheben, etwa so:

import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True:
    # 创建一个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
Nach dem Login kopieren

Python-Random-Walk-Erklärung

为突出起点,我们使用绿色绘制点(0,0),并使其比其它点大。为突出终点,我们在漫步包含的最后一个x值和y值处绘制一个点,使其为红色,并比其它点大。运行代码,将准确知道每次随机漫步的起点和终点。

隐藏坐标轴

下面来隐藏坐标轴,以免我们注意点是坐标轴而不是随机漫步路径。要隐藏坐标做代码如下:

# 隐藏坐标轴plt.axes().get_xaxis().set_visible(False)plt.axes().get_yaxis().set_visible(False)
Nach dem Login kopieren

为修改坐标轴,使用函数plt.axes()来将每条坐标轴的可见性设置为False。图如下:
Python-Random-Walk-Erklärung

相关免费学习推荐:python教程(视频)

Das obige ist der detaillierte Inhalt vonPython-Random-Walk-Erklärung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage