« Mathématiques avec Python et Ruby/Une tortue qui accélère la résolution de problèmes » : différence entre les versions

aucun résumé de modification
Aucun résumé des modifications
Aucun résumé des modifications
==Statistiques sur 100 billes==
 
Pour effectuer des statistiques sur 1000100 billes, on a intérêt à accélérer la tortue, avec
 
<source lang="python">
from random import *
 
speed=10000
hideturtle()
penup()
</source>
 
Après ça il n'y a plus qu'à remplir le tableau en recommençant 1000100 fois l'expérience précédente (lancer d'une bille):
 
<source lang="python">
penup()
 
for n in range(1000100):
home()
for h in range(24):
effectifs[int(xcor()]+=1
</source>
 
Ce script, bien qu'assez court, met du temps à s'exécuter (de l'ordre d'une minute). Pour l'accélérer, on peut ajouter un degré d'abstraction en n'utilisant pas la tortue. En effet, chaque pas est égal à -1 ou 1 au hasard, donc d'après ce qu'on a vu au début de ce chapitre (opérations sur les nombres relatifs), on ne fait qu'additionner 24 nombres égaux à 1 ou -1, ce qui donne ce script:
 
<source lang="python">
from random import *
effectifs=[0 for x in range(-24,25)]
for n in range(100):
effectifs[sum(randrange(-1,2,2) for h in range(24))]+=1
</source>
 
Cette fois-ci, l'effet est presque instantané.
 
==Dessin de l'histogramme==
 
Une fois le tableau d'effectifs rempli, le module ''turtle'' peut le représenter graphiquement sous forme d'un polygone des effectifs. Comme la méthode précédente est très rapide et que les effectifs des nombres impairs sont nuls, on va plutôt utiliser la variante suivante, avec 256 cases et 1000 essais:
 
<source lang="python">
from turtle import *
from random import *
effectifs=[0 for x in range(256)]
for n in range(1000):
effectifs[sum(randrange(2) for h in range(256))]+=1
 
reset()
for x in range(256):
goto(x,effectifs[x])
</source>
 
 
 
1 277

modifications