Random Walk (Implementación en Python)

IntroducciónUna caminata aleatoria es un objeto matemático, conocido como proceso estocástico o aleatorio, que describe una ruta que consiste en una sucesión de pasos aleatorios en algún espacio matemático, como los números enteros. Un ejemplo elemental de un paseo aleatorio es el paseo aleatorio en la línea de números enteros, que comienza en 0 y en cada paso se mueve +1 o -1 con igual probabilidad. Otros ejemplos incluyen el camino trazado por una molécula mientras viaja en un líquido o un gas, el camino de búsqueda de un animal en busca de alimento, el precio de una acción fluctuante y el estado financiero de un jugador pueden aproximarse mediante modelos de caminata aleatoria, incluso aunque pueden no ser verdaderamente aleatorios en la realidad. Como ilustran esos ejemplos, los paseos aleatorios tienen aplicaciones en muchos campos científicos, incluidos la ecología, la psicología, la informática, la física, la química, la biología y la economía. Los paseos aleatorios explican los comportamientos observados de muchos procesos en estos campos y, por lo tanto, sirven como modelo fundamental para la actividad estocástica registrada. Como una aplicación más matemática, el valor de pi se puede aproximar mediante el uso de un recorrido aleatorio en el entorno de modelado basado en agentes.

Basta de teorías aburridas. Tomemos un descanso mientras obtenemos un poco de conocimiento del código. Entonces, para codificar la caminata aleatoria, básicamente necesitaremos algunas bibliotecas en python, algunas para hacer matemáticas y otras para trazar la curva.

Bibliotecas requeridas

  • matplotlib Es una biblioteca externa que te ayuda a trazar la curva. Para instalar esta biblioteca, escriba el siguiente código en su cmd. 
pip install matplotlib

Sería suficiente para pasar por la instalación.

  • numpy También es una biblioteca externa en python que te ayuda a trabajar con arreglos y arrays. Para instalar la biblioteca, escriba el siguiente código en cmd. 
pip install numpy
  • random Es una biblioteca integrada de python que usaremos para generar puntos aleatorios.

Caminata aleatoria unidimensional Un ejemplo elemental de una caminata aleatoria es la caminata aleatoria en la línea de números enteros, que comienza en 0 y en cada paso se mueve +1 o ? 1 con igual probabilidad. 

Entonces, intentemos implementar la caminata aleatoria 1-D en python.

Python3

# Python code for 1-D random walk.
import random
import numpy as np
import matplotlib.pyplot as plt
 
# Probability to move up or down
prob = [0.05, 0.95] 
 
# statically defining the starting position
start = 2 
positions = [start]
 
# creating the random points
rr = np.random.random(1000)
downp = rr < prob[0]
upp = rr > prob[1]
 
 
for idownp, iupp in zip(downp, upp):
    down = idownp and positions[-1] > 1
    up = iupp and positions[-1] < 4
    positions.append(positions[-1] - down + up)
 
# plotting down the graph of the random walk in 1D
plt.plot(positions)
plt.show()

Producción: 

Dimensiones superiores En dimensiones superiores, el conjunto de puntos recorridos aleatoriamente tiene interesantes propiedades geométricas. De hecho, se obtiene un fractal discreto, es decir, un conjunto que exhibe autosimilitud estocástica a gran escala. En escalas pequeñas, se pueden observar «irregularidades» resultantes de la cuadrícula en la que se realiza la caminata. Dos libros de Lawler a los que se hace referencia a continuación son buenas fuentes sobre este tema. La trayectoria de una caminata aleatoria es la colección de puntos visitados, considerados como un conjunto sin tener en cuenta cuándo llegó la caminata al punto. En una dimensión, la trayectoria son simplemente todos los puntos entre la altura mínima y la altura máxima que alcanzó la caminata (ambos son, en promedio, del orden de ? n). 

Intentemos crear una caminata aleatoria en 2D. 

Python3

# Python code for 2D random walk.
import numpy
import pylab
import random
 
# defining the number of steps
n = 100000
 
#creating two array for containing x and y coordinate
#of size equals to the number of size and filled up with 0's
x = numpy.zeros(n)
y = numpy.zeros(n)
 
# filling the coordinates with random variables
for i in range(1, n):
    val = random.randint(1, 4)
    if val == 1:
        x[i] = x[i - 1] + 1
        y[i] = y[i - 1]
    elif val == 2:
        x[i] = x[i - 1] - 1
        y[i] = y[i - 1]
    elif val == 3:
        x[i] = x[i - 1]
        y[i] = y[i - 1] + 1
    else:
        x[i] = x[i - 1]
        y[i] = y[i - 1] - 1
     
 
# plotting stuff:
pylab.title("Random Walk ($n = " + str(n) + "$ steps)")
pylab.plot(x, y)
pylab.savefig("rand_walk"+str(n)+".png",bbox_inches="tight",dpi=600)
pylab.show()

Producción: 

Aplicaciones 

  1. En las redes informáticas, los recorridos aleatorios pueden modelar el número de paquetes de transmisión almacenados en un servidor.
  2. En genética de poblaciones, un paseo aleatorio describe las propiedades estadísticas de la deriva genética.
  3. En la segmentación de imágenes, se utilizan paseos aleatorios para determinar las etiquetas (es decir, «objeto» o «fondo») para asociar con cada píxel.
  4. En la investigación del cerebro, los paseos aleatorios y los paseos aleatorios reforzados se utilizan para modelar cascadas de disparos de neuronas en el cerebro.
  5. Las caminatas aleatorias también se han utilizado para muestrear gráficos en línea masivos, como las redes sociales en línea.

Referencias 
1. Wikipedia – Paseo aleatorio 
2. Stackoverflow – Paseo aleatorio 1D 
3. Documentación de matplotlib
Este artículo es una contribución de Subhajit Saha . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *