Maison > développement back-end > Tutoriel Python > Python implémente la méthode Monte Carlo (exemple de code)

Python implémente la méthode Monte Carlo (exemple de code)

不言
Libérer: 2019-01-14 11:29:02
avant
6982 Les gens l'ont consulté

Le contenu de cet article concerne l'implémentation de la méthode Monte Carlo (exemple de code) en Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

La méthode de Monte Carlo est une méthode de simulation statistique proposée par von Neumann et Ulam. Sous un grand nombre de nombres aléatoires, selon les résultats de l'estimation de probabilité, plus il y a de données aléatoires, plus les résultats sont. plus précis. Ci-dessous, nous utiliserons python pour implémenter la méthode Monte Carlo.

1. Tout d'abord, nous effectuons un simple calcul approximatif de pi Dans ce processus, nous devons utiliser des nombres aléatoires, nous devons donc d'abord utiliser import numpy as np pour importer la bibliothèque numpy.

2. Implémentation du code :

import numpy as np

total = 8000000
count = 0

for i in range(total):
    x = np.random.rand()
    y = np.random.rand()
    dis = (x**2+y**2)**0.5
    if dis <p>3. Dans le programme ci-dessus, nous utilisons 8 000 000 nombres aléatoires pour la livraison, afin que le résultat soit plus précis. L'exécution du programme nécessite un certain nombre. laps de temps, le résultat final est le suivant </p><p><span class="img-wrap"><img src="https://img.php.cn//upload/image/549/675/172/1547436392667253.png" title="1547436392667253.png" alt="Python implémente la méthode Monte Carlo (exemple de code)"></span></p><p>4 Faisons une application simple. L'image ci-dessous est ce que j'ai dessiné avec désinvolture dans le. outil de dessin. Pour un graphique, nous pouvons utiliser la méthode de Monte Carlo pour estimer l'aire de la partie noire du graphique. </p><p   style="max-width:90%"><span class="img-wrap"><img src="https://img.php.cn//upload/image/583/174/740/1547436406520588.png" title="1547436406520588.png" alt="Python implémente la méthode Monte Carlo (exemple de code)"></span></p><p>5. Le graphique ci-dessus est irrégulier, il suffit de savoir que lorsqu'un grand nombre de nombres aléatoires sont lancés, les nombres aléatoires apparaissent dans la probabilité de la partie noire, puis multipliez la superficie totale pour estimer la superficie de la partie noire. Nous savons que le code RVB noir est (0,0,0), nous devons donc calculer la probabilité de nombres aléatoires lorsque le code RVB est (0,0,0). </p><p>6. Implémentation du code : </p><pre class="brush:php;toolbar:false">from PIL import Image
import numpy as np

im = Image.open("C:/Users/21974/Desktop/handwrite2.PNG")
total = 9000000
count = 0
defin = 0
width = im.size[0]
height = im.size[1]

for i in range(total):    #用蒙特卡罗方法获得估计值
    x = np.random.randint(0, width-1)
    y = np.random.randint(0, height-1)
    k = im.getpixel((x, y))
    if k[0]+k[1]+k[2] == 0:
        count += 1
print(int(width*height*count/total))

for i in range(width):    #用遍历获得准确值
    for j in range(height):
        k = im.getpixel((i, j))
        if k[0] + k[1] + k[2] == 0:
            defin += 1
print(defin)
Copier après la connexion

Le code ci-dessus peut être divisé en deux parties. La première est suivie de la valeur estimée de la surface obtenue par la méthode de Monte Carlo, et le second Le for est suivi de la valeur exacte de la zone obtenue en parcourant tous les pixels, et la comparaison est effectuée après l'obtention des deux sorties.

Python implémente la méthode Monte Carlo (exemple de code)

Nous avons utilisé 9 000 000 nombres aléatoires dans le programme ci-dessus. On peut voir que les deux résultats de sortie ne sont pas très différents.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal