Le concept d'épreuve aléatoire

Une 'épreuve aléatoire' est un procédé (matérialisé par un dispositif, un protocole, une expérience parfaitement décrite) destiné à générer, de façon aléatoire à chaque expérimentation, et avec éventuellement répétition, les éléments d'un ensemble connu a priori. Cet ensemble, qui est donc l'ensemble des résultats de l'épreuve (ou de l'expérience), appelés également 'évènements élémentaires' peut être fini ou infini.
Le qualificatif 'aléatoire' est ici relatif à l'état d'ignorance de l'expérimentateur.
En somme, l'expérimentateur ne sait pas quel sera le résultat de son expérience, mais il connait l'ensemble des possibilités, même si cet ensemble est très grand ou même infini.
La réalité peut être un peu plus complexe comme le montre les exemples caricaturaux qui suivent mais la 'vraie vie' est toujours plus complexe que toutes les modélisations.
L'ensemble des résultats élémentaires se notent souvent U ou Ω et s'appelle "l'univers" (univers des possibles).

Quelques exemples

Pile ou face

Le lancer d'une pièce donne deux évènements élémentaires possibles donc un univers fini Ω={P,F}
Résultat P : apparition du côté 'PILE'.
Résultat F : apparition du côté 'FACE'.
Toute pièce de monnaie présente deux faces :
  • Le côté 'pile' portant la valeur
  • Le côté face portant un symbole
    représentatif de la nation
Pour simuler un tirage à pile ou face,
passer la souris sur l'image de la main !
PROTOCOLE:
Pour valider un lancer et garantir le côté aléatoire du résultat

Lancer d'un dé

Considérons un dé cubique, parfaitement équilibré avec les sommets arrondis pour permettre un roulement facile. Si on jette le dé sur une surface plane avec une énergie suffisante, il finit par s'immobilier en montrant sa face supérieure.
Nous avons donc là à nouveau un univers fini Ω={1,2,3,4,5,6} si on identifie l'entier n avec l'évènement élémentaire 'apparition de la face portant le numéro n'.
Un dé cubique comporte
6 faces numérotées de 1 à 6.
Pour simuler le lancer d'un dé
passer la souris sur l'image de la main !
PROTOCOLE:
Pour valider un lancer et garantir le côté aléatoire du résultat

Tirage d'une carte

Un jeu de bridge se compose de 52 cartes voir (détail ci-dessous). Le tirage d'une carte au hasard génère donc un univers fini Ω à 52 éléments pouvant être codés avec deux caractères ('DP'=Dame de pique, 'AC'=As de coeur, 'XK'=10 de carreau', '2T'= 2 de trèfle, etc...).
Le jeu de bridge
se compose de 52 cartes
réparties en :
4 'couleurs'
  • Trèfle
  • Carreau
  • Coeur
  • Pique
13 figures
  • As
  • Roi
  • Dame
  • Valet
  • 10
  • 9
  • 8
  • 7
  • 6
  • 5
  • 4
  • 3
  • 2

Les cartes les plus fortes As-Rois-Dames-Valets et 10 s'appellent des 'honneurs'.
Les honneurs se voient attribuer des points reflétant leur force :
  • As: 4 points
  • Roi: 3 points
  • Dame: 2 points
  • Valet: 1 point
  • Dix : 0 point
Pour simuler le tirage d'une carte,
passer la souris sur le dos du paquet !
PROTOCOLE:
Pour valider un tirage et garantir le côté aléatoire du résultat etc., etc.

Autres exemples

Le choix 'au hasard' d'un individu dans une population (revoir les concepts de base de la statistique descriptive) constitue une épreuve aléatoire.
Dans une population diverse et nombreuse le protocole risque d'être complexe. Bref, par exemple, faute d'avoir donné à chacun un numéro individuel et d'opérer le tirage avec un ordinateur, choisir un français 'au hasard' (vraiment au hasard) est un processus long et difficile, tant les critères de différentiation sont nombreux et variés.

Exemple d'expérience à univers théoriquement infini

Définissons l'expérience 'géométrique' suivante : Tirage d'un point dans un carré de côté 1.
Le résultat est un couple de réels disons (x,y) avec (par exemple) 0 ≤ x ≤ 1 et 0 ≤ y ≤ 1.
Ω est donc un ensemble ayant la puissance du continu.
Voici une applet simulant cette expérience.
Cliquez n'importe où sur le graphique !
Remarque importante sur ce type d'épreuve
La simulation ci-dessus a étée réalisée au moyen d'un point dont les cordonnées sont x(M)=Math.random() y(M)=Math.random().
La fonction Math.random() est une fonction interne du système (elle-même empruntée au langage JavaScript), dont nous savons seulement qu'elle renvoie une variable de type 'double' (réel double précision) entre 0 et 1.
Nous avons ici demandé en option d'affichage le nombre maximal de décimales autorisé soit 15. Mais de fait, les valeurs retournées par la fonction random() sont en nombre fini, même si ce nombre est très grand.
Un nombre réel, considéré comme un DDI contient une information infinie et l'expérience décrite (choix aléatoire d'un couple de réels) est tout simplement impossible à réaliser ni physiquement ni avec un calculateur-simulateur.
Il n'en reste pas moins que nous aurons besoin de ce concept d'univers des possibles infini dénombrable ou continu. L'utilisation du calcul intégral permet en effet des calculs plus simples que des calculs finis portant sur de très grandes quantités de variables.

De la théorie à la pratique

Les imprévus

Dans le modèle du tirage à pile ou face ou du lancer du dé, des évènements tels que ceux décrits ci-après sont considérés comme impossibles. Ils se produisent quand même quelquefois.
On peut les éliminer en considérant l'expérience comme 'non valide'.
Pièce sur tranche Dé 'cassé'

le coût du hasard

Nous avons vu que plus nous voulons assurer le côté aléatoire du résultat d'une expérience et plus nous devons renforcer le protocole.
Cela est vrai pour les expériences physiques comme pour les simulations par ordinateur. Nous verrons par la suite certains procédés utilisés de façon courante pour de telles simulations. Aucune n'est parfaite et nous devons mélanger de nombreuses techniques pour assurer un côté vraiment aléatoire, si tant est que cette notion existe vraiment.
Tout cela pour dire que la production d'un 'bon' nombre aléatoire peut être coûteuse en temps de calcul.
Cette remarque n'aurait guère d'importance si les simulateurs, pour vérifier certaines lois ne devaient pas simuler la répétition d'un très grand nombre d'épreuves aléatoires.

Note sur les simulations de cette page

Le lecteur pourra par une répétition de ces simulations se persuader qu'il s'agit bien d'épreuves 'aléatoires'.
De fait il n'en est rien dans la mesure où il est fait appel à des fonctions aléatoires prédéfinies des langages de programmation utilisés.
Mais il se trouve que l'auteur et le lecteur se trouvent dans le même état d'ignorance quand au processus utilisé.
Par exemple pour les gifs animés nous utilisons un code du genre :
function alea (m,M)
{ 
 		 var d=M-m;
		 var r=Math.random();
		 r*=100;
		 r=parseInt(r);
		 r=m+r%d;
		 return r;
 }
Nous pouvons donc estimer qu'il s'agit de hasard, avec la définition que nous en avons donnée dans l'introduction à ce chapitre.

Epreuves répétées ou parallèles, univers produit

On suppose maintenant qu'on a défini deux épreuves aléatoires E1 et E2 ayant des univers des possibles respectifs Ω1 et Ω2.
On suppose qu'on effectue E1 puis E2 de manières totalement indépendantes (le résultat de E1 n'affectant pas le protocole de E2).
Le résultat de cette expérience combinée pourra donc s'exprimer sous la forme d'un couple (ω1, ω2) élément d'un ensemble produit Ω1×Ω2 appelé 'univers produit'.
Cette remarque reste vraie quand E2=E1, l'univers devient alors Ω12.
Le fait de tirer une carte d'un jeu puis une seconde sans remettre la première (tirage dit sans remise) ne correspond pas au cas précédent, puisque le premier résultat ne peut plus se produire et que les couples (ω11) sont de fait exclus.
Evidemment, rien n'empêche de considérer plus de deux expériences, le résultat de trois lancers successifs de la même pièce pourra être noté par exemple (P,F,P). Il y a alors 23=8 résultats possibles.

Café Python

Voici un petit programme de démonstration des fonctions élémentaires du module 'random' du langage python :

Le coin du C

Le langage C, nettement moins convivial que Python, laisse au programmeur la charge de réinitialiser le générateur. Faute de quoi la série 'aléatoire' produite est toujours la même (déroutant pour les débutants dans ce langage).

La fonction 'srand' utilise le temps courant pour injecter une nouvelle 'semence' (anglais 'seed') au générateur.