Diseño de algoritmos Python - método Monte Carlo

Declaración de derechos de autor: la originalidad no es fácil, el plagio y la reimpresión están prohibidos en este artículo, ¡y se debe investigar la infracción!

1. Método de Montecarlo

El método Monte Carlo, también conocido como método de simulación estadística, técnica de muestreo aleatorio, es un método de simulación aleatoria, un método de cálculo basado en probabilidad y métodos teóricos estadísticos. Es un método de usar números aleatorios para resolver muchos problemas de computación. Conectar el problema a resolver con un determinado modelo de probabilidad, y utilizar una computadora electrónica para realizar simulación estadística o muestreo para obtener una solución aproximada al problema. Para mostrar simbólicamente las características probabilísticas y estadísticas de este método, lleva el nombre de la ciudad casino de Montecarlo.

En el siglo XVII, la gente sabía que la "frecuencia" de los eventos se usaba para determinar la "probabilidad" de los eventos. Esta es también la idea básica del método Monte Carlo. Cuando el tamaño de la muestra es lo suficientemente grande, podemos usar frecuencias para estimar probabilidades. Esta es también una forma común de encontrar pi.

2. Encuentra pi

¿Cómo estimar el tamaño de π cuando solo hay un generador de números aleatorios?

Cuando seleccionamos aleatoriamente una coordenada (x, y) en el rango (-1, 1), cada punto de coordenada tiene la misma probabilidad de ser seleccionado. Entonces la probabilidad de un círculo cuyas coordenadas caen dentro de un cuadrado de diámetro 1 es:
inserte la descripción de la imagen aquí

De la desigualdad de Chebyshev , podemos obtener un valor lo más cercano posible a pi bajo la premisa de generar una gran cantidad de puntos aleatorios.

3. Implementación del algoritmo de Python


import numpy as np

def pi(n, batch=1000):
    t = 0
    for i in range(n // batch):     # 随机获取坐标
        p = np.random.rand(batch, 2)
        p = (p * p).sum(axis=1)     # 计算坐标平方和
        t += (p <= 1).sum()         # 平方和小于1的即为落在圆中的点
    print(4 * t / n)

pi(10 ** 4)
pi(10 ** 7)
pi(10 ** 8)

Resultado de salida:
inserte la descripción de la imagen aquí

Como se muestra en la figura, bajo la premisa de generar una gran cantidad de puntos aleatorios, podemos obtener un valor lo más cercano posible al pi

4. Información del autor

Autor: La rutina de pesca de Xiaohong, Objetivo: ¡Hacer que la programación sea más interesante!

Concéntrese en algoritmos, reptiles, sitios web, desarrollo de juegos, análisis de datos, procesamiento de lenguaje natural, IA, etc. Esperamos su atención, ¡crezcamos y codifiquemos juntos!

Nota de derechos de autor: ¡Este artículo prohíbe el plagio y la reimpresión, y la infracción debe investigarse!

Supongo que te gusta

Origin blog.csdn.net/qq_44000141/article/details/130114796
Recomendado
Clasificación