El método de Montecarlo es un método no determinista o estadístico numérico, usado para aproximar expresiones matemáticas complejas y costosas de evaluar con exactitud. El método se llamó así en referencia al Casino de Montecarlo (Mónaco) por ser “la capital del juego de azar”, al ser la ruleta un generador simple de números aleatorios. El nombre y el desarrollo sistemático de los métodos de Montecarlo datan aproximadamente de 1944 y se mejoraron enormemente con el desarrollo de la computadora.
Referencia:
Todos alguna vez hemos aplicado el método Montecarlo (inconscientemente). Como ejemplo, consideremos el juego de Astucia Naval.
Normalmente, primero se realizan una serie de tiros a puntos aleatorios. Una vez se impacta en un barco, se puede utilizar un algoritmo determinista para identificar la posición del barco y así terminar de derrumbarlo.
Una caminata aleatoria (random walk en inglés) es ua formalización matemática de la trayectoria que resulta al hacer pasos sucesivos aleatorios. Un ejemplo elemental de caminata aleatoria es la caminata aleatoria en la línea de números enteros $\mathbb{Z}$, la cual comienza en $0$ y en cada paso se mueve $+1$ o $-1$ con igual probabilidad.
Otros ejemplos:
Todos pueden ser aproximados por caminatas aleatorias, aunque no sean en verdad procesos aleatorios.
Como dijimos, un ejemplo elemental de caminata aleatoria es la caminata aleatoria en la línea de números enteros $\mathbb{Z}$, la cual comienza en $0$ y a cada paso se mueve , which starts at 0 and at each step moves $+1$ o $-1$ con igual probabilidad.
Esta caminata se puede ilustrar como sigue:
Notemos que después de $5$ pasos podremos estar en 1, −1, 3, −3, 5, or −5. Las posibilidades son las siguientes:
Referencia:
Importante: librería random.
Referencia:
In [1]:
import random
In [13]:
def random_walk(n):
# Devuelve posición después de n pasos
x = 0
for i in range(n):
paso = random.choice([-1, 1])
x += paso
return x
In [15]:
def random_walk1(n):
# Devuelve secuencia de posiciones
x = 0
xx = [x]
for i in range(n):
paso = random.choice([-1, 1])
x += paso
xx.append(x)
return xx
Actividad. Graficar, en una misma ventana de gráficos, al menos ocho caminatas aleatorias de 100 pasos.
In [ ]:
# Solucionar acá
Y lo anterior, ¿para qué sirve?
Veremos lo siguiente con calma en la siguiente clase. Por ahora veámoslo como introducción (motivación)...