6. Randomiser (exemples)¶
Dans ce chapitre, nous verrons comment un programme peut introduire un élément aléatoire dans un calcul ou dans un raisonnement grâce au module random
. Ceci est très important pour programmer certains jeux. Nous allons voir que :
la fonction
random()
renvoie un nombre réel aléatoire dans l’intervalle[0, 1]
,la fonction
randint(a, b)
renvoie un entier aléatoire dans l’intervalle[a, b]
,la fonction
shuffle(liste)
fait une permutation aléatoire des éléments d’une liste.
Entier aléatoire¶
La fonction randint(a, b)
retourne un nombre aléatoire dans l’intervalle [a, b]
.
Avec y = randint(-200, 200)
nous choisissons une valeur y
aléatoire.
Pour éviter de dessiner une ligne depuis l’origine au premier point, nous levons le stylo au début, et nous le posons dès le premier point atteint avec goto(x, y)
Position aléatoire¶
Nous pouvons également choisir les deux coordonnées x
et y
de façon aléatoire.
Angle aléatoire¶
La fonction a = randint(-90, 90)
retourne un angle aléatoire dans l’intervalle [-90, 90]
.
Le programme produit un parcours aléatoire (marche aléatoire).
Taille aléatoire¶
La fonction d = randint(1, 3)
retourne un diamètre aléatoire dans l’intervalle [1, 3]
.
Sous la belle étoile¶
Les étoiles dans le ciel apparaissent à des positions plus ou moins aléatoires.
Nous calculons x
et y
comme des entiers aléatoires, choisis dans l’intervalle de la largeur et de la hauteur de la fenêtre.
Le diamètre d’une étoile d
est aléatoire dans l’intervalle [1, 9]
.
Pour faire un dessin, il est utile de pouvoir spécifier la région des étoiles.
Nous choisissons ici des régions rectangulaires définies par une position p
et une taille size
.
Les étoiles seront placées dans cette région.
Couleur aléatoire¶
La fonction choice()
retourne un élément aléatoire dans une séquence.
Emoji aléatoire¶
Fleurs dans un champ¶
Dans l’exemple suivant, nous plaçons des fleurs à des positions aléatoires dans un champ.
Distribution gaussienne¶
La distribution normale, ou distribution gaussienne, est la distribution qui apparait souvent dans la nature. La taille d’une population, le poids d’une population, suit souvent une distribution gaussienne.
La distribution normale gauss(mu, sigma)
est décrite par deux paramètres :
sa moyenne
mu
son écart-type
sigma
La fonction `gauss(0, 5)’ avec un écart type de 5 va distribuer ses valeurs autour de 0, de sorte placer 67% des points dans l’intervalle [-5, 5]. Le programme suivant montre un histogramme visuel de classification de 400 points.
La distribution des tailles des animaux, ou des humains, est également gaussienne. Ci-dessous nous montrons une distribution avec un écart type de 2 et ensuite avec un écart type de 10.
Champs de fleurs¶
Pour simuler la perspective, nous dessinons les fleurs proches plus grandes. Il est de nouveau utile de définir une fonction de répartition, qui permet de distribuer des listes d’objets dans une région rectangulaire.
Aquarium¶
Nous ajoutons des feuillages en bas de l’aquarium et intercalons les poissons avec les plantes.
Permuter¶
La fonction shuffle()
permet de permuter les éléments d’une liste. Ceci est l’équivalent de ce qu’on fait avec des cartes de jeux, quand on les mélange.