bilaloch
Messages postés556Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention31 octobre 2019
-
4 juin 2007 à 15:33
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 2009
-
4 juin 2007 à 17:23
Bonjour à tous,
Je voudrais poser une question très simple mais tout de même assez dangereuse. J'ai programmé un logiciel en utilisant les "rnd" pour générer des nombres aléatoires, mais malheureusement, lors des tests sur le compilateur, j'obtiens toujours les même nombres. Je pense que c'est seulement parce que c'est sur le compilo, mais je pose quand même la question pour obtenir des réponses plus claires.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 4 juin 2007 à 16:11
"Je voudrais poser une question très simple mais tout de même assez dangereuse"
Peux-tu nous dire ce qu'il y a d'"assez dangereux" à généraer un nombre aléatoire, s'il te plait ?
De sorte à nous protéger de tels "dangers"
Ce n'est dangereux que ti, ayant ainsi tiré au hasard un nombre, tu misais sur lui de fortes sommes, persuadé que ce serait un numéro gaggnant !
bilaloch
Messages postés556Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention31 octobre 20191 4 juin 2007 à 16:34
lol Nan pas tout à fait. C'est dangereux parce que je ne savais pas si c'était normal ou pas, c'est tout. Ne t'inquiéte pas, je ne mise rien sur rien ;) .
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 4 juin 2007 à 17:23
Quand même un petite explication sur les nombres aléatoires, d'abord il faut bien se rendre compte qu'en informatique comme dans tout notre cosmos en général, il est totalement impossible de générer un nombre réellement aléatoire.
Comment font donc les générateurs de nombres aléatoires dans un pc ?
Il existe une panoplie d'algorithmes dévellopés à seul but de générer des séries nombres "pseudos"-aléatoires, comme par exemple prendre un nombre à deux chiffres, l'élever au carré et prendre les deux chiffres du milieu et recommencer, qui pourrait deviner en voyant la série des nombres de deux chiffres la logique de cette suite ?
D'autres plus complexes vont faire une collecte d'entropie (mouvement de la souris, données collectées de manière anarchique sur les ports...) afin de générer quelque chose de beaucoup plus hasardeux. (Ca n'a l'air de rien mais ca fait l'objet de beaucoup de recherche en fait...)
La fonction Rnd pioche dans une série générée par l'un de ces algorithmes. Mais encore une fois, il ne peut y piocher au hasard. En fait quand tu appelles Rnd, il te sort le nombre pointé par un entier, puis incrémente cet entier.
Par défaut cet entier vaut 0, c'est pourquoi ton programme te sortait chaque fois la même suite. La fonction Randomize permet d'initialiser l'entier selon la date et l'heure actuelle, et ainsi arriver à un endroit inconnu dans la suite de nombres pseudos aléatoires.
D'où également la remarque pertinente de draluorg de n'utiliser Randomize qu'une fois au début du programme, il est inutile de l'appeler après...