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