Réflexions sur les générateurs de nombres aléatoires

Niveau : Terminale S
vendredi 30 mai 2008
par  Nordine Bernard TOUMACHE

Présentation

Depuis peu, je dirais approximativement 1995 avec l’apparition des machines à capacité de mémoire suffisante, on nous demande, au lycée, de faire des simulations d’expérience aléatoire à l’aide de ces générateurs. Il est donc légitime de s’interroger sur ce qu’ils font et ce qu’ils sont. En côtoyant un peu de théorie sur les suites équiréparties sur [0, 1], j’ai d’abord pensé que la solution était là ; je me suis trompé, car c’est nécessaire mais pas suffisant. Cependant, là se trouve l’origine de ce travail qui s’adresse à un élève de terminale S, puisqu’il fournit trois sujets pour la nouvelle épreuve pratique de mathématiques dans cette classe.

Remarques : Il est indéniable que ces sujets se traitent mieux avec un tableur de type Excel qu’avec une calculatrice, mais il est aussi indéniable que cette dernière (dont, en principe, chaque élève est muni) offre une souplesse d’utilisation que n’offre pas le premier.

Contenu des documents

 Considération sur les générateurs de nombres aléatoires. Test du poker
 Sujet n° 1 : Suites de nombres aléatoires et test d’adéquation à une loi uniforme
 Sujet n° 2 : Test d’équirépartition sur [0, 1] d’une suite
 Sujet n° 2 (variante graphique) : Test d’équirépartition sur [0, 1] d’une suite
 Sujet n° 3 : Test du caractère aléatoire d’une table de chiffres aléatoires
 Sujet n° 4 : Table de chiffres aléaloires et test du maximum
 Remarques sur la suite Rac(n)-Ent(Rac(n))
 Applications de la partie entière d’un réel

Générateurs de nombres aléatoires
Trois sujets pour l’épreuve pratique
Table de chiffres aléatoires et test du maximum
Un quatrième sujet pour l’épreuve pratique
Remarques sur la suite Rac(n)-Ent(Rac(n))
Applications de la partie entière d’un réel
(texte)
Applications de la partie entière d’un réel
(fichier xls d’illustration)
Autre application de la partie entière d’un réel

N.B. Le fichier « Application de Ent().xls » contient des macros. Pour activer ces macros, utiliser la procédure suivante : ouvrir un fichier Excel ; dans le menu Outils, choisir Macros|Sécurité... ; dans l’onglet niveau de sécurité, sélectionner niveau de sécurité moyen puis OK ; refermer l’application Excel ; réouvrir Excel ; dans la boite de dialogue qui s’ouvre au démarrage de Excel choisir « Activer les macros » ; sur la page « tester », le bouton de commande « lancer » permet de démarrer l’application. Cette application fonctionne pour des versions de Excel 2000 à Excel 2003 (incluses). Le programme est accessible par la touche Alt+F11 et demeure la propriété de son auteur.


Commentaires

Logo de TOUMACHE Nordine-Bernard
mercredi 25 mai 2011 à 08h59 - par  TOUMACHE Nordine-Bernard

Le commentaire publié le lundi 23 mai 2011 à 13h20, par TOUMACHE Nordine-Bernard est une réponse au commentaire publié le vendredi 29 octobre 2010 à 16h43, par Marc Jambon

Logo de TOUMACHE Nordine-Berard
lundi 23 mai 2011 à 20h48 - par  TOUMACHE Nordine-Berard

Vous dites :« Quant à passer par le logarithme décimal pour avoir la partie entière d’un nombre réel, en réalité décimal en informatique, c’est porter à dérision les mathématiques auprès du grand public : faire des calculs aussi compliqués pour une simple troncature ».
Je ne vois pas où il est qestion de ceci, dans l’article je montre que la fonction E(log(X)) + 1 envoie le nombre p de chiffres de l’entier X écrit en base 10 et je m’en sers dans le programme qui suit, il ne sagit certainement pas d’utiliser le logarithme pour calculer la partie entière d’un nombre donné, là je suis d’accord ce serait ridicule
Sans ce résultat comment feriez-vous pour avoir le nombre p de chiffres de l’entier X que vous ne connaissez pas ? Imaginez que ce soit la machine qui génere ces nombres X, vous avez besoin du nombre p de chiffres de l’entier X, comment faites-vous ? Il y a peut-être d’autres méthode mais celle-ci fonctionne et est simple

Logo de TOUMACHE Nordine-Berard
lundi 23 mai 2011 à 13h20 - par  TOUMACHE Nordine-Berard

Comment sont engendrée ces suites il me semble que j’aborde le sujet mais je n’ai pas de réponse, que des hypothèses :
1) Une telle suite devrait être équirépartie sur [0 ;1] , cette définition est une définition « à l’infini » et est donc inexploitable comme le montre l’exemple de la suite racine de n - E(racine de n) que je traite dans un des articles.
2) On en est donc réduit à générer des suites finies qui sont des nombres pseudo-aléatoires, par quelles méthodes ?
Des méthodes sont proposées, les suites obtenues sont alors corrigées apres avoir subies des tests statistiques du type « test du poker » ou« test du maximum » et elles deviennent alors les suites utilisées sur les calculatrices « rand’ ou sur les tableurs : »alea« sur excel »....
J’ai trouvé ces exemples en tapant " nombres pseudo-aléatoires sur Google :

3.1 La méthode de Von Neumann 3.1.1 Exemple
3.1.2 Défauts

3.2 Méthode de Fibonacci
3.3 Générateurs congruentiels linéaires 3.3.1 Exemples d’algorithmes

3.4 D’autres exemples utilisant les congruences
Allez voir pour les descriptions de ces méthodes.

Logo de Marc Jambon
vendredi 29 octobre 2010 à 16h43 - par  Marc Jambon

Ce que vous proposez semble intéressant, vous pouvez bien vérifier tous les tests que vous voudrez, test du poker et d’autres, malgré cela, vos suites restent toujours préprogrammées, on pourrait dire que vos suites sont déterministes. Je veux dire par là que si vous simulez deux fois de suite une partie de n « lancers de dés » ou de n « pile ou face », avec ce que vous suggérez, en repartant à 0 entre les deux parties, vous obtenez exactement la même suite, en d’aures termes vous reproduisez la même partie.

Or, j’ai essayé la touche Random sur Mathematica, là, dans un programme adéquat qui répète n fois l’utilisation de Random, j’obtiens non seulement des suites qui ressemblent à des suites aléatoires (qu’il vaudrait mieux qualifier de pseudo-aléatoires comme le font certains probabilistes) et qui semblent ainsi simuler n « lancers de dés » ou n « pile ou face », mais si je fais exécutuer le programme une première fois, j’efface tout et je recommence, j’obtiens deux suites différentes, exactement comme si je réalise effectivement de telles parties. Je ne sais absolument pas comment sont engendrées ces suites et votre article ne permet pas de l’expliquer.

Logo de Marc Jambon
dimanche 24 octobre 2010 à 08h42 - par  Marc Jambon

Ce commentaire porte sur « Partie entière de Racine de n » et « Racine de n » où n est un entier naturel
(utilisé dans les 3e et 6e document).

Racine de n est un exemple relativement exceptionnel (parmi les nombres réels mathématiques) où la partie entière a un sens sans problème, en effet, c’est le plus grand entier dont le carré est inférieur ou égal à n, on l’appelle aussi « Racine carrée entière approchée par défaut de n ». Bien noter que ce n’est pas la composition de deux opérateurs, l’opérateur Racine agissant sur n puis l’opérateur Partie entière agissant sur (Racine de n).

Le développement décimal à p décimales de Racine de n a aussi un sens et est tout simplement (10^(–p)) x Partie entière de Racine de ( n  x 10^2p).

Le développement à p décimales de Racine de n – Partie entière de racine de n n’est autre que la partie décimale du nombre précédent.

Dans tous les cas, les calculs sont en fait des calculs d’entier, il n’y a jamais lieu à approximation.

samedi 23 octobre 2010 à 19h16

Ce commentaire concerne l’article

Quelques applications de la partie entière d’un nombre réel.

et ne porte pas sur les applications aux probabilités.

Le mot « nombre réel » prend malheureuselment des sens différents selon qu’on se place en mathématiques ou en informatique.

En mathématiques un nombre réel ou prétendu tel est une entité qui fait appel à l’infini, exemples e, pi, aucun de ces nombres n’est jamais rentré dans un ordinateur qui comme chacun sait a une capacité finie. II serait bien préférable d’appeler de tels nombres des nombres infinitésimaux. Par contre il est possible de rentrer dans un ordinateur une approximation, le plus souvent décimale, de e ou de pi.

En informatique un nombre réel a plus de réalité, il désigne dans les langaes de programmation usuels un nombre décimal. Beaucoup de gens et notamment les lycéens, même scientifiques, ne font aucune différence entre les deux points de vue, tout simplement parce qu’ils n’ont jamais appris ce qu’était un nombre réel au sens mathématique du terme.

La partie entière d’un nombre réel mathématique fait appel au tiers-exclu et par là même n’est pas toujours calculable, ce qui n’a dailleurs aucune incidence en informatique puisque de toute façon un nombre réel mathématique n’est jamais rentré dans un ordinateur.

La partie entière d’un nombre réel de l’informatique, n’est en fait que la partie entière d’un nombre décimal : c’est une simple troncature, on supprime les chiffres placés après la virgule ou le point décimal, on n’a même pas besoin de la division euclidienne qui serait utile pour la partie entière d’un nombre rationnel comme cela est rappelé à juste titre mais çà ne sert à rien pour la suite de l’article.

Quant à passer par le logarithme décimal pour avoir la partie entière d’un nombre réel, en réalité décimal en informatique, c’est porter à dérision les mathématiques auprès du grand public : faire des calculs aussi compliqués pour une simple troncature. De plus les calculs sur les logarithmes étant en fait des calculs sur les approximations décimales des logarithmes, on risque à l’arrivée de tomber une unité à côté.