Le fichier Rand
contient un mauvais générateur aléatoire.
Pour le vérifier, on va afficher en 3D trois valeurs successives de la
fonction nextDouble
et vérifier qu'il y a effectivement une
corrélation très importante.
Le fichier principal Plot
contient quelques lignes permettant de
mettre dans un fichier data.xyz
des triplets de coordonnées.
Enfin, l'appel de la commande gnuplot data.plot
dans un terminal
vous affichera en 3D le fichier data.xyz
Plot
pour qu'elle fasse ce qu'on lui
demande. On affichera 1000 points. Lancer ensuite le programme, puis
lancer gnuplot
, et vérifier qu'il y a bien un problème (il vous faudra
tourner l'image). Vérifier que le problème n'a pas l'air d'apparaitre
avec la fonction nextDouble
de la classe Random
Vous trouverez ici les différents fichiers dont vous avez
besoin pour commencer.
Une autre façon d'observer un générateur pseudoaléatoire est
d'utiliser une représentation sous forme d'image: On demande au
générateur 512 x 512 fois une valeur (entière) entre 0 et 1 à l'aide
de la fonction nextInt(2)
et on affiche le résultat comme une
image en noir et blanc de taille 512 par 512.
Le code de la classe Image
vous permet d'écrire une image en
noir et blanc au format pbm.
RandP
(générateur aléatoire
utilisé dans PHP)
Implémentez la méthode vue en TD qui permet de retrouver la graine du
générateur aléatoire de Java connaissant deux valeurs successives
renvoyées par nextInt
.
Pour trouver les paramètres du générateur congruentiel, consultez la documentation de Java
Ecrivez une classe Alea qui contient les méthodes suivantes:
int Bernouilli(double p)
qui simule une variable aléatoire de Bernouilli de paramètre p
int Dice()
qui lance un dé (non truqué)
double Exponentielle(double lambda)
qui simule une variable
aléatoire exponentielle de paramètre lambda
ìnt Poisson(double lambda)
qui simule une variable de Poisson
de paramètre lambda
int Binomiale(int n, double p)
qui simule une variable aléatoire
binomiale de paramètre n,p
int Geometrique(double p)
qui simule une variable aléatoire
géométrique de paramètre p
double Normale()
qui simule une variable aléatoire normale.
On utilisera pour tout cela la fonction Math.random
qui fournit un
nombre entre 0 (compris) et 1 (non compris) dont on supposera la
distribution uniforme (malgré les réserves vues en cours et dans ce TP)
Ecrivez une fonction qui à partir d'un tableau de nombres affiche combien de fois chaque nombre apparaît sous la forme d'un histogramme.
Ecrire deux applications
Buts marqués | Nombre de matches |
---|---|
0 | 27 |
1 | 71 |
2 | 114 |
3 | 78 |
4 | 55 |
5 | 21 |
6 | 6 |
7 | 3 |
8 | 4 |
9 | 1 |