test_galton.py

Created by elodie-gamot

Created on March 18, 2022

1.44 KB

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()

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our <a href="https://www.numworks.com/legal/cookies-policy/">cookies policy</a>.