Nous décrivons ici comment utiliser le problème d'aiguille de Buffon de vote pour estimer π \ piπ , introduisons une autre méthode, qui est essentiellement la même, en utilisant la méthode de Monte Carlo.
Comme le montre la figure, une longueur de côté aléatoire est de 1 1Lancernndans le carré de 1n haricots, supposons qu'il y aitkkk est tombé sur1 4 \ frac {1} {4}41Dans le cercle unitaire, le point rouge de la figure. Alors selon la probabilité géométrique, kn = π 4 1 \ frac {k} {n} = \ frac {\ frac {\ pi} {4}} {1}nk=14Fr., Donc π = 4 kn \ pi = \ frac {4k} {n}Pi=n4 km。
Implémenté en Python:
import numpy as np
def get_pi(n):
"""
:param n: 实验次数
:return: π的估计值
"""
#获得n个服从均匀分布U(0, 1)的随机数X, Y
X = np.random.uniform(0, 1, n)
Y = np.random.uniform(0, 1, n)
#实验成功的次数,用向量形式实现,比用for循环要快的多,特别是n很大的时候
k = np.sum(X ** 2 + Y ** 2 <= 1)
#得到π的估计并返回
pi = 4 * k / n
return pi
print(get_pi(10000))
Sortie: 3.1424
Le résultat de sortie est bien pire que le bien connu 3.1415926, car nous n'avons simulé que 10000 expériences et le nombre d'expériences peut être augmenté pour réduire l'erreur