Comment marche la fonction Random

Comment marche la fonction Random - Divers - Programmation

Marsh Posté le 16-05-2005 à 19:15:08    

C'est une question qui me turlupine, alors j'espère que vous assouvirez ma curiosité  :pt1cable:  
 
Est-ce que quelqu'un connait le fonctionnement de la fonction RANDOM, présente dans tous les langages et mêmes sur les calculatrices.  
Je comprends à peu près au niveau hardware comment un processeur peut effectuer des calculs, pour éventuellement executer des algorithmes etc..
Mais comment est-ce qu'une machine peut choisir un nombre au hasard (je suppose qu'à l'origine c'est 0 ou 1) de manière équiprobable  :??:


Message édité par frankie_flowers le 16-05-2005 à 19:20:42
Reply

Marsh Posté le 16-05-2005 à 19:15:08   

Reply

Marsh Posté le 16-05-2005 à 19:49:28    

c'est du pseudo-aléatoire, avec pour base une date système et des calculs complexes qui font que d'une milliseconde à l'autre, le resultat a tendance à etre très différent.


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 16-05-2005 à 19:52:16    

Ok merci :jap:
J'avais effectivement pensé à se baser sur la date, mais je pensais que c'était pas plus précis que la seconde.

Reply

Marsh Posté le 17-05-2005 à 08:30:39    

boulax a écrit :

c'est du pseudo-aléatoire, avec pour base une date système et des calculs complexes qui font que d'une milliseconde à l'autre, le resultat a tendance à etre très différent.


 :??:  
La plupart du temps, c'est un générateur linéaire congruentiel, et ça dépend pas de l'heure (même si on utilise effectivement la date système pour initialiser le générateur).
 
En gros:
valeur0 = date;
valeurN= (valeur(N-1)*X + Y) modulo RAND_MAX
   X et Y étant choisis avec plus ou moins de soin.
 
Exemple, classiquement en C c'était:

newRandom = (1103515245*previousRandom + 12345 ) % (1<<31);


Message édité par Lam's le 17-05-2005 à 08:30:50
Reply

Marsh Posté le 19-05-2005 à 18:34:51    

Ok, mais le previousRandom est stocké en mémoire dure ?
ou alors la date est utilisée à chaque reboot ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed