La première fonction permet de connaître le nombre de billes parmi b tombées dans le compartiment n°k d’une planche de Galton à n rangées. La seconde permet une visualisation graphique de la répartition de b billes tombées dans une planche de Galton à n rangées. Une bille=un pixel en hauteur.
from math import * from random import * from kandinsky import * from matplotlib.pyplot import * def galton(b,n,k): compteur=0 for bille in range(b): s=0 for chemin in range(n): a=randint(0,1) #A chaque rangée, la bille va aléatoire à droite (1) ou à gauche (0). s+=a #s stocke le nombre de chemins "droite" empruntés if s==k: compteur+=1 #si s est égal au numéro du compartiment souhaité, on comptabilise une bille return(compteur) def visual_galton(b,n): #Utilisation de Kandinsky liste=(n+1)*[0] #On crée une liste qui va stocker le nombre de billes dans chaque compartiment for bille in range(b): s=0 for chemin in range(n): a=randint(0,1) s+=a liste[s]+=1 surprise=color(randint(0,255),randint(0,255),randint(0,255)) #Juste pour le plaisir d'obtenir une couleur aléatoire pour notre histogramme for i in range(len(liste)): largeur=320//len(liste) #Optimisation de la largeur des rectangles en fonction du nombre de compartiments fill_rect(5+largeur*i,220-liste[i],largeur,liste[i],surprise) #Les deux premiers arguments donnent les coordonnées en haut à gauche du rectangle, les deux suivantes donnent sa largeur puis sa hauteur. def other_visual(b,n): #Utilisation de MatPlotLib liste=(n+1)*[0] for bille in range(b): s=0 for chemin in range(n): a=randint(0,1) s+=a liste[s]+=1 plot(liste) show()