Trouvons le rapport de circonférence avec Python

Si vous souhaitez simplement utiliser le rapport de circonférence

import math
print(math.py)

C'est bien, mais j'aimerais voir comment je recherche la version 3.14. Par conséquent, j'aimerais trouver le rapport de circonférence à l'aide d'un modèle probabiliste.

Dotez l'endroit approprié dans le premier quadrant

Tout d'abord, définissez un nombre aléatoire de 0 à 1 pour chacune des coordonnées x et y et frappez un point.

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

Vérifiez si x ^ 2 + y ^ 2 est à moins de 1

Si la somme de x et y au carré et additionnés l'un à l'autre est inférieure à 1, le point est à l'intérieur d'un cercle avec un rayon de 1.

number = x ** 2 + y ** 2 #À l'intérieur du cercle si c'est à moins de 1

Voir la valeur approximative encore et encore

Répétez cela plusieurs fois, et si le nombre de répétitions est le dénominateur et le nombre de fois qui était dans 1 x 4 (en supposant que le même résultat est obtenu dans tous les quadrants) est le numérateur, le rapport de circonférence est calculé. Essayons environ 1000 fois.

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 #Tous les quadrants

print(incount * quadrant / iteration)
3.2

Eh bien, c'est subtil. Il semble que le nombre était petit, alors essayons-le 10 millions de fois.

#Cela prend environ 5 secondes
3.141382

Est-ce bien?

Essayez de visualiser

Je n'ai pas été vraiment impressionné lorsque les chiffres sont sortis, alors visualisons-le avec matplotlib.

Première version 1000 fois

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()

Attendez environ 10 secondes ...

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

Ce n'est pas facile à comprendre, alors essayons la version 10 millions de fois.

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()

Une fois que vous avez fait cela, éloignez-vous de votre ordinateur. Au moment où vous reviendrez, le processus devrait être terminé.

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

Il est plus facile de comprendre si vous faites le carré du graphique, mais vous pouvez voir qu'il est distribué dans un bel arc.


Calculer cela ne signifie pas que quelque chose est né, mais si vous êtes intéressé, j'apprécierais que vous puissiez l'essayer.

référence

Société de traitement de l'information

Recommended Posts

Trouvons le rapport de circonférence avec Python
La chose semblable à une recherche de liste en Python
Trouver des erreurs en Python
Trouvez l'ordre / la combinaison en Python
Lançons "python -m antigravity" en python
Essayons Fizz Buzz avec Python
Voyons voir l'utilisation de l'entrée en python
Quadtree en Python --2
Python en optimisation
CURL en Python
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Trouver des fichiers comme Linux Find en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
Rechercher et vérifier la matrice inverse en Python
FizzBuzz en Python
Trouver un automate de produit direct (fini déterministe) en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Réflexion en Python
Constante en Python
Faisons un calcul de combinaison avec Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Méthode #Monte Carlo pour trouver le rapport de circonférence en utilisant Python
Analysons le journal de validation git en Python!
Trouvons "T" dans votre travail avec nous! !! !!
Implémentation minimale d'Union Find en Python
Jugons les émotions à l'aide de l'API Emotion en Python
Découvrez la fraction de la valeur saisie en python
Trouvez des nombres premiers avec un code aussi court que possible en Python
Faisons quelques exemples de traitement des notifications en Python
Trouvez la solution de l'équation d'ordre n avec python
[Python] Trouvez la matrice de translocation en notation d'inclusion