Accueil du site - Support

Cabri et tirage aléatoire

par Yves Cortial
Publié le dimanche 21 mars 2004.


Partie 1 : Généralités

L’utilisation des tirages aléatoires par la fonction "rand" ou "random" de la calculatrice de Cabri est une potentialité peu utilisée mais qui mérite d’être précisée.

La fonction "rand" :

Elle utilise deux arguments sous la forme rand(a,b) et donne comme résultat un nombre réel pseudo aléatoire à répartition uniforme entre a et b . Par exemple, rand(0,6) fournit un réel entre 0 et 6.
Mais cette syntaxe ne réalisera le tirage qu’une seule fois. Si l’on veut réaliser plusieurs tirages successifs, on doit imposer de recalculer la fonction rand en faisant dépendre un des arguments d’un paramètre "dynamique" même si cette dépendance est sans influence effective.
Par exemple, pour le paramètre alea modifiable à la demande, on peut écrire rand(a,b+0*alea).
Au cours des modifications de alea, de nouveaux tirages seront effectués...

Réalisation d’un Dé à n faces :

Ici, on veut obtenir un entier aléatoire entre 1 et n avec une probabilité identique pour toutes les valeurs possibles.
Ceci sera réalisé par l’opération : tirage = ceil(rand(0*alea , n)) où la fonction ceil(x) renvoie le plus petit entier supérieur ou égal à x .
En fait, il faut corriger le résultat obtenu par max(1, tirage) pour tenir compte du cas, hautement improbable, où le tirage donne le résultat limite 0 .
D’où le premier exemple de tirage aléatoire :


Il suffit de déplacer le point I pour modifier la valeur de alea et, donc, de faire défiler les tirages (déplacer le segment AB produit le même effet ...).

Remplissage aléatoire d’une surface :

On considère un domaine rectangulaire de côtés a et b et on veut obtenir un point P de ce domaine à coordonnées aléatoires x et y qui seront recalculées à chaque modification du paramètre alea selon :
x = rand(0*alea, a) et y = rand(0*alea, b)

Remarque : la fonction rand donne un résultat en cm lorsque un de ses arguments est en cm ...

L’utilisation de l’outil "Trace" appliqué à P et une variation continue du paramètre alea vont conduire à un remplissage progressif et aléatoire du rectangle.

Rappel : pour effacer les traces, faire un double clic avec CabriJava ou Ctrl-F avec les versions classiques de Cabri.

Utilisation de l’outil "Lieu" :

Son utilisation est délicate car les diverses versions de Cabri ne donnent pas les mêmes résultats et seul CabriJava a un comportement logique et satisfaisant !

La solution la plus triviale pour afficher simultanément un grand nombre de points P est d’utiliser l’outil "Lieu" au point P. Ce lieu sera décrit en fonction du point I qui commande le calcul du paramètre alea intervenant dans la détermination de P .
Cela fonctionne très bien avec CabriJava, mais on constate que, sous Cabri DOS ou Cabri Windows, la modification d’alea modifie bien le point courant mais pas le lieu obtenu calculé un seule fois au cours du tracé initial.

Il faut donc se montrer têtu et imposer de recalculer les nombres aléatoires à la demande en introduisant un paramètre supplémentaire p qui interviendra dans les cordonnées x et y selon :
x = rand(0*alea*p , a) et y = rand(0*alea*p , b)
Dans ces relations, alea et p jouent exactement les même rôles, mais p va servir à tracer le lieu et alea permettra les tirages successifs (ce qui résout le problème pour les versions anciennes de Cabri).

Quand à Cabri II+, la situation est beaucoup plus grave car la gestion des lieux semble différente.
D’une part, l’astuce du deuxième paramètre est inutile car la modification d’un seul paramètre suffit à imposer le "recalcul" des lieux.
Malheureusement, la moindre modification de la figure comme, par exemple, le déplacement d’une zone de texte provoque ce "recalcul" de façon involontaire et très pénalisante en puissance de calcul.

Mais le phénomène le plus ennuyeux apparaît quand on désire utiliser le point aléatoire comme point de départ d’une nouvelle construction : le résultat obtenu sera non fiable car cette construction ne correspondra pas à la même valeur aléatoire calculée pour tous les points concernés (voir exemple ci-contre).
Ce problème se pose aussi, mais de façon moins cruciale pour les anciennes versions de Cabri mais pas pour CabriJava ...

 > Voir la partie 2 pour l’utilisation des outils précédents avec la Méthode de Monte Carlo


Première figure : tirages

Deuxième figure : remplissages

Troisième figure : lieux