Comment marche la fonction Random - Divers - Programmation
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.
Marsh Posté le 16-05-2005 à 19:52:16
Ok merci
J'avais effectivement pensé à se baser sur la date, mais je pensais que c'était pas plus précis que la seconde.
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); |
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 ?
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é
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