domingo, 13 de junio de 2021

Maquina de Galton en Python

 Podemos ver una entrada que habla sobre el tema desarrollada en Excel.

Máquina de Galton en Excel

En esta ocasión vamos a crear un procedimiento en Python.


import numpy as np
import matplotlib.pyplot as plt
from random import randint
levels = int(input("How many levels do you want?(min 1/ 20 by default) ") or 20)
if levels >= 1:
  lanes = [0]*(levels)
else:
  print("The value of levels can't be lower than 1.")
  exit()
for h in range((levels)**2*100):
  stored = -1
  for j in range(levels):
    stored += randint(0, 1)
  lanes[stored] += 1
print((levels)**2*100, "balls were used in totall")
print(lanes)
X = np.arange(-((len(lanes)/2)-.5), (len(lanes)/2)+.5)
plt.suptitle('Galton Board')
plt.bar(X + 0.00, lanes, width=0.25)
plt.show()
plt.savefig("BellCurve.png")

La clave del algoritmo está en la línea:

stored += randint(0, 1)

Esta línea lo que hace es añadir un 1 o un 0 con una probabilidad de ½. Esto representa lo que hacen las bolas al tropezar con uno de los pivotes, donde pueden ir a la derecha o a la izquierda con una probabilidad del 50%. Si una bola baja 10 niveles y va la derecha en seis ocasiones y a la izquierda en cuatro ocasiones, el valor de la variable stored sería 6.

No hay comentarios:

Publicar un comentario