Nombre aléatoires...

Résolu
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 - 4 juin 2007 à 15:33
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Derniè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.

Merci d'avance de vos réponses,

BILALoch

9 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 juin 2007 à 15:36
Salut,
Tu peu essayer d'ajouter la ligne Randomize avant chaque utilisation de Rnd

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
4 juin 2007 à 15:48
oui, ou bien Randomize Timer


Cheyenne


 
3
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
4 juin 2007 à 16:10
Salut a tous,

Randomize ne doit etre appelé QU'UNE SEULE FOIS! au lancement du prog par exemple.

Une fois appelé tu auras bien des nombres aleatoires....

++

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
3
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
4 juin 2007 à 15:35
D'après mes derniers tests, cela dépend du moment où la méthode "rnd" est lancé dans le programme. J'attends toujours l'avis d'un pro.

BILALoch
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
4 juin 2007 à 15:53
Cela rendra le nombre générée totalement aléatoire ? Par exemple on peut l'utiliser ainsi :

Randomize
Variable = int(Rnd * 5)

BILALoch
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 juin 2007 à 16:00
Salut,
Oui mais le mieux reste encore de le tester non?

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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  !
0
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
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 ;) .

BILALoch
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
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...

<hr size="2" width="100%" />Julien.
0