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. ** **
python: 3.7.3 numpy: 1.17.4
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
mean ()
.La méthode de calcul du rapport de circonférence par la méthode de Monte Carlo elle-même est connue.
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]]
"""
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]
"""
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
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.