Ganarateur d'un nombre aleatoire
rozalina
Messages postés
8
Statut
Membre
-
Mins Messages postés 45 Statut Membre -
Mins Messages postés 45 Statut Membre -
Bonjour,
SVP aidez moi a realiser un petit programme en pascal de ganarateur d'un nombre aleatoire mais sans utiliser la commande random,par exemple on utilise l'algorhitme de monte carlo.SVP
SVP aidez moi a realiser un petit programme en pascal de ganarateur d'un nombre aleatoire mais sans utiliser la commande random,par exemple on utilise l'algorhitme de monte carlo.SVP
Configuration: Windows XP Internet Explorer 6.0
3 réponses
-
Je ne connais pas la méthode de Monte-Carlo...
Pour simuler des nombres aléatoires tu peux faire :program SansTitre; const PAS=153243; const GENERATEUR=4123; var CURSEUR:integer; function aleatoire(a,b:integer):integer; // nombre compris entre a et b begin CURSEUR:=CURSEUR+PAS; result:=a+ (CURSEUR mod GENERATEUR) mod (b-a); end; var i:integer; begin CURSEUR:=17; for i:=1 to 50 do writeln(aleatoire(0,9)); writeln; write('Fin du programme. Appuyer sur Entree pour terminer'); readln; end.L'avantage d'utiliser random, c'est que les valeurs de GENERATEUR PAS et CURSEUR sont modifiés au début du programme... -
Générer un nombre aléatoire n'est pas évident, il y a beaucoup d'études dessus...
Voici un code un peu plus complexe que je viens de faire, il se base sur l'heure d'exécution du programmeprogram SansNom; uses dos; var memoire:real; function random:real; // renvoie un nombre entre 0 et 1 var h,m,s,c:word; u,v,w,x,y:real; s1,s2:string; i:integer; begin gettime(h,m,s,c); memoire:=(memoire*17*c)/7451; u:=h*m+s+c; v:=h+m*s+c; w:=h+m+s*c; x:=u*v+w; y:=u+v*w; str(x*y*memoire,s1); s2:='0.'; for i:=1 to length(s1) do if (s1[i]>='0') and (s1[i]<='9') then s2:=s2+s1[i]; val(s2,result); end; var i:integer; begin memoire:=1; for i:=1 to 15 do writeln(random:0:10); writeln; write('Fin du programme. Appuyer sur Entree pour terminer'); readln; end. -
Sinon il y a ceci :
https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_pseudo-al%C3%A9atoires#Exemples_d.27algorithmes_connus C'est à lire car ça donne des algorithmes très simples (Von Neumann)
https://fr.wikipedia.org/wiki/Mersenne_Twister Bon générateur
https://fr.wikipedia.org/wiki/Blum_Blum_Shub Très bon générateur...
Mais faut des bases solides en maths si tu ne veux pas te contenter du Von Neumann...
Courage :)