TD : Générateur de nombres aléatoires
Dorat Rémi
1.nération de nombres aléatoires et calcul de distribution
2. Test dunérateur aléatoire
3. Conception et test d'un autre générateur
4. Test d'un autrenérateur
5- Construire des bruits non uniformes
p 2
p 2
p 4
p 5
p 6
1
1.nération de nombres aléatoires et calcul de distribution
Le but de ce TD est de tester le générateur aléatoire d'Excel, de spécifier d'autres générateurs de
nombres aléatoires et de les tester également. La dernière étape consiste à tester un générateur de nombres aléatoires
gaussiens. Tester un générateur aléatoire, ie s'assurer d'avoir un générateur non biaisé, c'est s'assurer des résultats des
études que l'on fera en l'utilisant. Par exemple, les simulations Monte-Carlo, qui sont utilisées en finance, reposent sur la
possibilité de générer des valeurs aléatoires non biaisées.
Remplir la colonne A de nombre entiers tirés au hasard dans [0;9] en utilisant la fonction de
tirage aléatoires de nombres entiers fournie par Excel.
Calculer la distribution sur chacune des valeurs : combien de 1 dans la colonne A, combien de
2, etc... Dire si cette distribution paraît ou non uniforme, ie si il n'y a pas un biais des tirages en
faveur de l'une ou l'autre des valeurs. Tracer cette distribution avec des histogrammes.
[A passer en première approche] Quelle procédure pourrait on envisager pour tester de
manière plus formelle l'hypothèse suivante : la distribution est uniforme ? Implémenter une
telle procédure.
2. Test dunérateur aléatoire
Le fait qu'un générateur aléatoire permette de reproduire convenablement la distribution d'une distribution
uniforme est un bon premier test (on parle de test d'homogénéité). Néanmoins, il convient de lui adjoindre d'autres tests.
En effet, soit la séquence de tirages : 123456789123456789123... Cette séquence passe le test d'homogénéité et
pourtant elle n'est pas admissible au titre d'un tirage aléatoire.
Diverses méthodologies pourraient être envisagées, on pourrait tester si la probabilité que deux valeurs
particulières se suivent est significativement différente de 0.01. On propose ici un test classique ou "test du poker". Il
consiste à reorganiser la série des tirages en des groupes de 4 valeurs. On peut alors tester la fréquence d'un groupe
les 4 valeurs sont différentes, la fréquence d'un groupe deux valeurs sont identiques etc... Comme on peut
calculer les probabilités théoriques de ces valeurs, on peut ensuite comparer les fréquences obtenues sur la série des
tirages aux probabilités théoriques. Le nom de "test du poker" est un peu abusif puisqu'ici les tests peuvent se faire avec
répétition. En revanche, le fait de tirer des nombres avec répétition facilite le dénombrement pour celui qui veut obtenir
2
les probabiltés théoriques . L'obtention des valeurs théoriques est expliquée dans ce qui suit, le lecteur pourra sauter
cette étape pour directement consulter le tableau qui résume ces valeurs théoriques :
La probabilité d'avoir 4 chiffres différents est 10 (choix du premier chiffre) * 9 (choix du second chiffre
parmi ceux qui restent) * 8 (choix du troisième chiffre parmi ceux qui restent) * 7 (choix du dernier
chiffre parmi ceux qui restent), soit 10*9*8*7 qui est à rapporter au nombre total de cas possibles 104.
Soit une probabilité de 0.504 que les 4 chiffres soient différents
La probabilité d'avoir 4 chiffres identiques est 10 rapporté à 10000 : il existe en effet 10 groupes de 4
chiffres identiques.
La probabilité d'avoir 3 chiffres identiques est 10 (choix de la hauteur des 3 chiffres identiques)*9
(choix de la hauteur du chiffre à 1 occurrence )*4 (4 manières de placer le chiffre isolé dans la
séquence) que l'on rapporte à 104
La probabilité d'avoir 2 paires de chiffres est 10 (choix de la première paire)*9 (choix de la seconde
paire) * 3 (nombres des séquences possibles) que l'on rapporte à 104
La probabilité d'une paire se déduit des probabilités précédentes, comme 1 diminué de la somme de
ces probabilités.
On obtient les probabilités théoriques suivantes pour un groupe de 4 valeurs :
Fréquence théorique
Les chiffres sont tous différents 0.504
La liste comporte une paire 0.432
La liste comporte deux paires 0.027
La liste comporte trois chiffres identiques 0.036
La liste comporte quatre chiffres
identiques
0.001
Tirer des groupes de 4 entiers aléatoires entre 0 et 9 ou 1 et 10. On pourra par exemple tirer un
valeur en A1, une valeur en A2, une en A3 et une en A4. On obtient ainsi le tirage d'un premier
groupe sur la ligne A. On procède de même sur la ligne B.
Calculer les fréquences observées de paire, des cas de 4 chiffres identiques... et comparer les
aux fréquences théoriques : que constate t'on ?
3
En proposant des groupes de taille supérieure, on améliore encore la qualité de l'approximation (le
dénombrement devenant cependant significativement plus difficile pour établir les probabilités théoriques). On donne les
probabilités théoriques dans ce cas :
Fréquence théorique
Les chiffres sont tous différents 0.3024
La liste comporte une paire 0.5040
La liste comporte deux paires 0.1080
La liste comporte trois chiffres identiques 0.072
La liste comporte quatre chiffres
identiques
0.0045
La liste comporte trois chiffres identiques
et une paire
0.0090
La liste comporte cinq chiffres identiques 0.0001
[A passer en première approche] On propose de prévoir une implémentation pour des mains de
5 chiffres au lieu de 4. A partir de cette main, on peut tester la série des nombres générés par
Excel.
[A passer en première approche] Jusqu'à maintenant, on a utili des mains de 4-5 chiffres
avec répétition : le nom de test du poker ne semble donc pas très justif. Pourrait on envisager
une solution pour implémenter des tirages de main de poker ?
3. Conception et test d'un autre générateur
On introduit un nouveau générateur ou k-générateur pour générer des quadruplets de valeurs entières
dans [0:9]. Par exemple, pour k=83, ce générateur fonctionne ainsi :
Tirer un nombre aléatoire quelconque dans [0:1] (par exemple 0.6754)
On multiplie ce nombre par k. 83*0.6754=56.0582
On a généré 4 nombres aléatoires qui sont les décimales du nouveau nombre : 0 5 8 2
On utilise la décimale de 56.0582 : 83*0.0582=4.8306
On a généré 4 nombres aléatoires qui sont les décimales du nouveau nombre : 8 3 0 6
etc
4
Tester si pour 83 on passe le "test du poker". Si on le passe, chercher au moins une autre
valeur qui le passe et une autre valeur qui ne le passe pas.
4. Conception et test d'un autre générateur
On propose d'étudier un générateur classique en lui faisant passer les mêmes tests qu'aux autres
générateurs. Il s'agit du générateur à Congruence Linéaire introduit par Lehmer en 1949.
Soit la suite
Xn
, on a
a, m, c
X0∈
0;m
m
est appelé le module et
X0
la graine.
Xn1=aXncmod m
La suite
Xn
peut prendre
m
valeurs, les entiers entre
0
et
m
, soit un nombre fini de valeurs : elle est
donc nécessairement périodique. Il s'agit surtout de trouver des paramètres produisant des séries à période longue.
Dans un premier temps, on propose de tester des séries de données.
Donner plusieurs manières de déterminer si il y a une période dans la série des nombres
rés.
Tester manuellement difrentes ries de paramètres (différentes valeurs de m et c ) et
noter celles pour lesquelles vous constatez un cycle.
Un théorème donne une condition sur les paramètres qui garantit de trouver une série longue. Si note t la période du
générateur à congruence linéaire :
m est premier avec c pas de facteurs commun
tout nombre premier qui divise m divise aussi a1
si 4divise m alors 4divise a1
ssi GCL est de période
maximale t=m
Est ce qu'un telnérateur est un bon générateur au vu des tests précédents ?
5
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !