Lassen Sie uns das Umfangsverhältnis mit Python finden

Wenn Sie nur das Umfangsverhältnis verwenden möchten

import math
print(math.py)

Das ist in Ordnung, aber ich würde gerne sehen, wie ich nach 3.14 suche. Daher möchte ich das Umfangsverhältnis anhand eines Wahrscheinlichkeitsmodells ermitteln.

Punktieren Sie die entsprechende Stelle im ersten Quadranten

Stellen Sie zunächst für jede der x- und y-Koordinaten eine Zufallszahl von 0 bis 1 ein und treffen Sie einen Punkt.

import random
x, y = random.random(), random.random()

Überprüfen Sie, ob x ^ 2 + y ^ 2 innerhalb von 1 liegt

Wenn die Summe von x und y im Quadrat und addiert innerhalb von 1 liegt, befindet sich der Punkt innerhalb eines Kreises mit einem Radius von 1.

number = x ** 2 + y ** 2 #Innerhalb des Kreises, wenn dieser innerhalb von 1 liegt

Den ungefähren Wert immer wieder anzeigen

Wiederholen Sie dies viele Male, und wenn die Anzahl der Wiederholungen der Nenner ist und die Anzahl der Wiederholungen innerhalb von 1 x 4 (unter der Annahme, dass in allen Quadranten das gleiche Ergebnis erzielt wird) das Molekül ist, wird das Umfangsverhältnis berechnet. Versuchen wir es ungefähr 1000 Mal.

import random

incount = 0

def GenerateRandom():
  x, y = random.random(), random.random()
  number = x ** 2 + y ** 2
  return number

iteration = 1000

for ite in range(iteration):
  check = GenerateRandom()
  if (check < 1):
    incount += 1

quadrant = 4 #Alle Quadranten

print(incount * quadrant / iteration)
3.2

Nun, es ist subtil. Es scheint, dass die Anzahl gering war, also versuchen wir es 10 Millionen Mal.

#Es dauert ungefähr 5 Sekunden
3.141382

Ist es gut?

Versuchen Sie zu visualisieren

Ich war nicht wirklich beeindruckt, als die Zahlen herauskamen, also lassen Sie es uns mit matplotlib visualisieren.

Erste 1000-fache Version

import random
import matplotlib.pyplot as plt

def GenerateRandom():
  x, y = random.random(), random.random()
  number = x ** 2 + y ** 2
  return [number, x, y]

iteration = 1000

for ite in range(iteration):
  check = GenerateRandom()
  if (check[0] < 1):
    plt.scatter(check[1], check[2], c = 'red', s = 10)
  else:
    plt.scatter(check[1], check[2], c='blue', s = 10)

plt.title('Monte Carlo Method')
plt.xlabel("x")
plt.ylabel("y")
plt.show()

Warten Sie ca. 10 Sekunden ...

スクリーンショット 2020-08-17 13.46.37.png

Es ist nicht leicht zu verstehen, also probieren wir die Version 10 Millionen Mal aus.

import random
import matplotlib.pyplot as plt

def GenerateRandom():
  x, y = random.random(), random.random()
  number = x ** 2 + y ** 2
  return [number, x, y]

iteration = 10000000

for ite in range(iteration):
  check = GenerateRandom()
  if (check[0] < 1):
    plt.scatter(check[1], check[2], c = 'red', s = 10)
  else:
    plt.scatter(check[1], check[2], c='blue', s = 10)

plt.title('Monte Carlo Method')
plt.xlabel("x")
plt.ylabel("y")
plt.show()

Wenn Sie dies getan haben, gehen Sie einen Spaziergang von Ihrem Computer weg. Wenn Sie zurückkommen, sollte der Vorgang abgeschlossen sein.

スクリーンショット 2020-08-17 13.47.54.png

Es ist einfacher zu verstehen, wenn Sie das Diagramm quadratisch machen, aber Sie können sehen, dass es in einem schönen Bogen verteilt ist.


Das zu berechnen bedeutet nicht, dass irgendetwas geboren wird, aber wenn Sie interessiert sind, würde ich es begrüßen, wenn Sie es versuchen könnten.

Referenz

Information Processing Society

Recommended Posts

Lassen Sie uns das Umfangsverhältnis mit Python finden
Die findähnliche Sache der Liste in Python
Finde Fehler in Python
Finden Sie die Reihenfolge / Kombination in Python
Lassen Sie uns "Python -m Antigravitation" in Python ausführen
Versuchen wir es mit Fizz Buzz mit Python
Mal sehen, wie man Eingaben in Python verwendet
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Suchen Sie nach Dateien wie Linux Find in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
Suchen und überprüfen Sie die inverse Matrix in Python
FizzBuzz in Python
Finden Sie (deterministische endliche) direkte Produktautomaten in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reflexion in Python
Konstante in Python
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
#Monte Carlo-Methode zum Ermitteln des Umfangsverhältnisses mit Python
Lassen Sie uns das Git-Commit-Protokoll in Python analysieren!
Lassen Sie uns "T" in Ihrer Arbeit mit uns finden! !! !!
Minimale Implementierung von Union Find in Python
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Finden Sie in Python Primzahlen mit einem möglichst kurzen Code
Lassen Sie uns einige Beispiele für die Benachrichtigungsverarbeitung in Python erstellen
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
[Python] Finden Sie die Translokationsmatrix in Einschlussnotation