Finden Sie das Umfangsverhältnis mit einer dreizeiligen Funktion [Python / Monte-Carlo-Methode]

Was ist dieser Artikel?

Dies ist eine Erklärung, wie das Umfangsverhältnis mit einer dreizeiligen Funktion ermittelt wird.

** Erzwingen Sie in der Regel nicht, dass der Code komprimiert wird, sondern schreiben Sie ihn auf natürliche Weise. ** ** **

Versionsinformation

python: 3.7.3 numpy: 1.17.4

Code

calcPi.py


import numpy as np

def calcPi(n):
  points = np.random.uniform(0.0, 1.0, (n, 2)) 
  inner  = np.hypot(points[:,0], points[:,1]) < 1
  return inner.mean() * 4

Kommentar

Die Methode zur Berechnung des Umfangsverhältnisses nach der Monte-Carlo-Methode selbst ist bekannt.

Die erste Zeile

np.random.uniform speichert einheitliche Zufallszahlen im Bereich von 0 bis 1 in einem Array von n Zeilen und 2 Spalten. Jede Zeile entspricht einem Punkt in der Ebene.

Die erste Zeile


points = np.random.uniform(0.0, 1.0, (n, 2))

"""
Zum Beispiel n=Wann

[[ 0.6906296   0.20549271]
 [ 0.13386813  0.77204275]
 [ 0.5970941   0.49659941]
 [ 0.92884413  0.37740529]
 [ 0.49212498  0.13915062]
 [ 0.69357975  0.23229706]
 [ 0.14287715  0.14076891]
 [ 0.20199753  0.49663344]
 [ 0.90105166  0.87612407]
 [ 0.19636323  0.39813228]]
"""
2. Zeile

np.hypot (x, y) stammt vom Ursprung des Punktes (x, y) Gibt die Entfernung zurück.

points [:, 0] ist das Array, das aus der 0. Spalte von points extrahiert wurde, dh die Größe der x-Koordinate jedes Punkts. points [:, 1] ist auch die y-Koordinate jedes Punktes.

Da wir am Ende "<1" machen, ändert es sich in "Wahr", wenn der Inhalt des Arrays kleiner als 1 ist, und in "Falsch", wenn es 1 oder mehr ist. Mit anderen Worten, wenn der Abstand vom Ursprung weniger als 1 beträgt, erhalten Sie ein Array, das True ist, und wenn es mehr als 1 ist, erhalten Sie ein Array, das False ist.

2. Zeile


  inner = np.hypot(points[:,0], points[:,1]) < 1

"""
Zum Beispiel n=Wenn es 10 ist,
inner == [True True True True False True False True True False]
"""
3. Zeile

Wenn Sie die Anzahl der Punkte, deren Abstand vom Ursprung kleiner als 1 ist, durch die Gesamtzahl der Punkte dividieren, erhalten Sie einen ungefähren Wert von "π / 4". Gibt den Durchschnitt der Innereien multipliziert mit 4 zurück. (Wie Sie in [Kommentar] sehen können (https://qiita.com/POPOPON/items/c557c984a239bab21a9d#comment-4e39f41f904960d4c669), werden "True" und "False" zum Zeitpunkt der Berechnung in "1" bzw. "0" konvertiert.)

4. Zeile


  return inner.mean() * 4

Ausführungsergebnis

Dies ist das Ausführungsergebnis, wenn seed auf 0 gesetzt ist.

print(calcPy(10))        # => 2.8
print(calcPi(100))       # => 3.32
print(calcPi(1000))      # => 3.302
print(calcPi(10000))     # => 3.1544
print(calcPi(100000))    # => 3.13228
print(calcPi(1000000))   # => 3.142204
print(calcPi(10000000))  # => 3.1421468
print(calcPi(100000000)) # => 3.14170808

das ist alles. Bitte lassen Sie mich wissen, wenn Sie Fehler haben.

Recommended Posts

Finden Sie das Umfangsverhältnis mit einer dreizeiligen Funktion [Python / Monte-Carlo-Methode]
#Monte Carlo-Methode zum Ermitteln des Umfangsverhältnisses mit Python
Simulieren Sie die Monte-Carlo-Methode in Python
Erstellen Sie mit Class einen Python-Funktionsdekorator
Monte-Carlo-Methode
Versuchen Sie, die Monte-Carlo-Methode in Python zu implementieren
Kernel-Methode mit Python
[Übung] Erstellen Sie eine Watson-App mit Python! # 2 [Übersetzungsfunktion]
[Python] Ein Programm zum Finden einer Fibonacci-Zahlenfolge (rekursive Funktion, Divisions-Governance-Methode, dynamische Planungsmethode)
Einführung in die Monte-Carlo-Methode
Erstellen Sie einen Mastodon-Bot mit einer Funktion, die automatisch mit Python antwortet
[Python] Berechnungsmethode mit numpy
Verknüpfen Sie Python Enum mit einer Funktion, um es aufrufbar zu machen
Erstellen Sie ein Verzeichnis mit Python
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
[Road to Intermediate Python] Rufen Sie eine Klasseninstanz wie eine Funktion mit __call__ auf
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
[Python 3.8 ~] Wie man rekursive Funktionen mit Lambda-Ausdrücken intelligent definiert
[Statistik] Visualisieren und verstehen Sie die Hamiltonsche Monte-Carlo-Methode mit Animation.
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
[Python] Ich habe einen Bildbetrachter mit einer einfachen Sortierfunktion erstellt.
Lösen Sie das Python-Rucksackproblem mit der Branch-and-Bound-Methode
[Hinweis] Verwenden eines 16x2-stelligen LCD-Zeichens (1602A) von Python mit Raspeye
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python
Python-Grafikhandbuch mit Matplotlib.
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Löse ABC166 A ~ D mit Python
Erstellen Sie eine virtuelle Umgebung mit Python!
Ich habe mit Python eine Lotterie gemacht.
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Erstellen Sie ein Empfehlungssystem mit Python
Schätzung von π nach der Monte-Carlo-Methode
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
[Python] Unterschied zwischen Funktion und Methode
[Python] Erbt eine Klasse mit Klassenvariablen
Ich habe mit Python einen Daemon erstellt
Verwenden einer Webkamera mit Raspberry Pi
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Erkennen Sie analoge Signale mit dem A / D-Wandler mithilfe von Python auf Raspberry Pi 3!
[Python] Erklärt anhand eines konkreten Beispiels, wie die Bereichsfunktion verwendet wird
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Erstellen Sie mit JupyterHub + JupyterLab auf Rapsberry Pi 3B + eine Python-Mehrbenutzerplattform!
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen einer einfachen Power-Datei mit Python
[Python] Ein Programm, das Treppen mit # erstellt
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Installieren Sie Python als Framework mit pyenv
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python