Nombres aléatoires

Nombres aléatoires - PHP - Programmation

Marsh Posté le 04-02-2005 à 18:44:07    

Je poste ça sur le forum PHP, mais la question est valable pour tous les langages de programmations...
Quand on lance une fonction qui crée un nombre aléatoire, qu'est ce qui se passe ? Je me doute bien que le mot "aléatoire" est une métaphore et que l'ordinateur ne ressort pas un nombre ex-nihilo.
Alors d'ou vient ce nombre aléatoire ?
 
meric !

Reply

Marsh Posté le 04-02-2005 à 18:44:07   

Reply

Marsh Posté le 04-02-2005 à 19:10:17    

judicael a écrit :

Je poste ça sur le forum PHP, mais la question est valable pour tous les langages de programmations...
Quand on lance une fonction qui crée un nombre aléatoire, qu'est ce qui se passe ? Je me doute bien que le mot "aléatoire" est une métaphore et que l'ordinateur ne ressort pas un nombre ex-nihilo.
Alors d'ou vient ce nombre aléatoire ?
 
meric !


 
En effet, ça n'existe pas, mais un rand(mktime(date(...))) te donnera un bon compromis...  :D


Message édité par Hermes le Messager le 04-02-2005 à 19:10:28
Reply

Marsh Posté le 04-02-2005 à 19:30:46    

Donc toutes les fonctions qui ressortent un nombre aléatoire se basent sur l'horloge ?!

Reply

Marsh Posté le 04-02-2005 à 19:33:28    

tu connais quelques choses de moins statique ? (et présent dans un ordinateur) :)

Reply

Marsh Posté le 04-02-2005 à 20:06:25    

Il existe en mathematiques une fonction qui te sort un nombre pseudo-aleatoire.
Comme ce nom l'indique, ce nombre n'est pas totalement aleatoire, cependant il l'est presque. Cette fonction a ete implementee sur les ordinateurs. Le probleme avec cette fonction c'est qu'elle sort toujours les memes nombres "a la suite". En gros, meme si les nombres en eux sont aleatoires, on connait la suite des nombres.
Sur les ordinateurs, quand tu utilise la fonction pour retourner le nombre aleatoire, cette derniere utilise "le temps depuis que le pc est allume" comme parametre de la fonction.
Avec cette methode on est sur de ne "jamais" utiliser 2 fois  le meme parametre (tant que l'on a pas ralume le pc).
Mais helas, avec cette methode il y un incovenient.
On pourrait "deviner" le nombre qui va sortir. Ben oui, la fonction va retourner le meme nombre si l'on utilise le meme parametre.
 
L'astuce qu'on trouve les constructeurs des ordinateurs a ete de "decaler" la fonction.
Etant donne que la fonction est continue vers l'infini, il n'y a pas de probleme lors du decalage.
C'est ainsi que lorsque tu allume ton pc, ce dernier va "decaler" la fonction pseudo-aleatoire en fonction de la date de ce dernier (nbre de milisecondes depuis une date precise).  
On va decaler "le zero" de la fonction. Par consequent, tant que le pc est allume, la fonction va retourner le meme nombre si l'on utilise le meme parametre (parametre qui de toute facon ne peut pas etre "influence" par l'utilisateur). Mais une fois que le pc est redemarre, la fonction sera decalee. Par consequent si l'on tente d'utiliser un parametre de la derniere "session", cette fois ci le nombre sera different (a cause du decalage).
 
J'espere que mes explications n'ont pas ete trop obscures.

Reply

Marsh Posté le 04-02-2005 à 22:23:10    

Merci beaucoup ! c'est exactement ce que je voulais savoir. Je me doutais bien que c'était en fonction de la date ou qqch, mais je voulais savoir quel était, en théorie, le traitement.

Reply

Marsh Posté le 04-02-2005 à 22:26:47    

judicael a écrit :

Merci beaucoup ! c'est exactement ce que je voulais savoir. Je me doutais bien que c'était en fonction de la date ou qqch, mais je voulais savoir quel était, en théorie, le traitement.


 
SI tu reprends ma proposition, tu devrais pas avoir de mauvaise surprise...  :D  

Reply

Marsh Posté le 04-02-2005 à 22:59:04    

Ma question n'était pas technique mais théorique. Voire philosophique. Parce que bon, comment faire surgir l'aléatoire ? Ca pose problème... sauf si on était des electrons, mais c'est une autre histoire.

Reply

Marsh Posté le 05-02-2005 à 16:11:24    

Moi j'ai toujours pensé que l'aléatoire n'existait pas puisquu si l'on utilise quelque chose qu'on apel aléatoir on se rend en fait compte qu'en utilisant les même conditions le chiffre qui ressort est toujours le même.
 
Exemple:
Tu lance un dès. Le chiffre 6 sort.
Tu relance le même dés de la même facon sur la même surface et au même endroit alors ca sera toujours le 6 qui sortira.  
 
L'aléatoire n'existe pas, c'est juste un chiffre qui est déterminé en fonction de toute une série de paramétres. La seule chose à faire c'est de faire rentrer pleins de paramétres comme la date et l'heure par exemple (cf. plus haut) et même peut être d'autres encore!
 
Nombre pseudo aléatoire définition:
Nombre résultant d’algorithmes de confusion de l’entrée dérivée de l’environnement de l’ordinateur, comme les coordonnées de la souris.
 

Reply

Sujets relatifs:

Leave a Replay

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