Recherche du rapport de circonférence avec une fonction à 3 lignes [méthode Python / Monte Carlo]

Quel est cet article

C'est une méthode et une explication de la façon de trouver le rapport de circonférence avec une fonction à trois lignes.

En règle générale, ** ne force pas la compression du code, mais l'écris de manière naturelle. ** **

information sur la version

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

Commentaire

La méthode de calcul du rapport de circonférence par la méthode de Monte Carlo elle-même est connue.

La première ligne

np.random.uniform stocke des nombres aléatoires uniformes dans la plage de 0 à 1 dans un tableau de n lignes et 2 colonnes. Chaque ligne correspond à un point du plan.

La première ligne


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

"""
Par exemple n=Quand

[[ 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]]
"""
2e ligne

np.hypot (x, y) provient de l'origine du point (x, y) Renvoie la distance.

points [:, 0] est le tableau extrait de la 0ème colonne de points, c'est-à-dire la taille de la coordonnée x de chaque point. points [:, 1] est également la coordonnée y de chaque point.

À la fin, nous faisons <1, donc si le contenu du tableau est inférieur à 1, il passera à True, et s'il est égal ou supérieur à 1, il passera à False. En d'autres termes, si la distance de l'origine est inférieure à 1, le tableau est True, et s'il est égal ou supérieur à 1, le tableau est False.

2e ligne


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

"""
Par exemple, n=Quand il est 10,
inner == [True True True True False True False True True False]
"""
3e ligne

En divisant le nombre de points dont la distance de l'origine est inférieure à 1 par le nombre total de points, on obtient une valeur approximative de «π / 4». Renvoie la moyenne des entrées multipliée par 4. (Comme vous pouvez le voir dans Comment, «True et False» sont convertis en «1, 0» au moment du calcul, respectivement.)

4ème ligne


  return inner.mean() * 4

Résultat d'exécution

Ceci est le résultat de l'exécution lorsque seed est mis à 0.

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

c'est tout. Veuillez me faire savoir si vous avez des erreurs.

Recommended Posts

Recherche du rapport de circonférence avec une fonction à 3 lignes [méthode Python / Monte Carlo]
Méthode #Monte Carlo pour trouver le rapport de circonférence en utilisant Python
Simuler la méthode Monte Carlo en Python
Créer un décorateur de fonction Python avec Class
Méthode de Monte Carlo
Essayez d'implémenter la méthode Monte Carlo en Python
Méthode Kernel avec Python
[Pratique] Créez une application Watson avec Python! # 2 [Fonction de traduction]
[Python] Un programme pour trouver une séquence de Fibonacci (fonction récursive, méthode de gouvernance divisionnaire, méthode de planification dynamique)
Introduction à la méthode Monte Carlo
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python
[Python] Méthode de calcul avec numpy
Associez Python Enum à une fonction pour la rendre appelable
Créer un répertoire avec python
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
[Road to Intermediate Python] Appelez une instance de classe comme une fonction avec __call__
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
[Python 3.8 ~] Comment définir intelligemment des fonctions récursives avec des expressions lambda
[Statistiques] Visualisez et comprenez la méthode Hamiltonian Monte Carlo avec animation.
Une fonction qui mesure le temps de traitement d'une méthode en python
[Python] J'ai créé une visionneuse d'images avec une fonction de tri simple.
Résolvez le problème du sac à dos Python avec la méthode de branche et liée
[Remarque] Utilisation d'un écran LCD à 16 caractères à 2 chiffres (1602A) de Python avec Raspeye
[Python] Qu'est-ce qu'une fonction zip?
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Faites fonctionner l'imprimante de reçus avec python
Manuel de graphisme Python avec Matplotlib.
Utilisez vl53l0x avec RaspberryPi (python)
Résoudre ABC166 A ~ D avec Python
Créez un environnement virtuel avec Python!
J'ai fait une loterie avec Python.
[Python] Faire de la fonction une fonction lambda
Créer un système de recommandation avec python
Estimation de π par la méthode de Monte Carlo
[Python] Générer un mot de passe avec Slackbot
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Faisons un graphe avec python! !!
[Python] Différence entre fonction et méthode
[Python] Hériter d'une classe avec des variables de classe
J'ai créé un démon avec Python
Utiliser une webcam avec Raspberry Pi
Ecrire un script batch avec Python3.5 ~
Détectez les signaux analogiques avec un convertisseur A / N en utilisant python sur Raspberry Pi 3!
[Python] Explique comment utiliser la fonction range avec un exemple concret
[Python + PHP] Créez un moniteur de température / humidité / pression avec Raspberry Pi
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Créez une plateforme multi-utilisateurs Python avec JupyterHub + JupyterLab sur Rapsberry Pi 3B +!
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Créer un fichier power simple avec Python
[Python] Un programme qui crée des escaliers avec #
Faisons un jeu de shiritori avec Python
Installer Python en tant que Framework avec pyenv
Précautions lors du décapage d'une fonction en python