Nombre aléatoires...

Résolu
Signaler
Messages postés
556
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
31 octobre 2019
-
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Tu peu essayer d'ajouter la ligne Randomize avant chaque utilisation de Rnd

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


Cheyenne


 
Messages postés
625
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010

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...
Messages postés
556
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
31 octobre 2019
1
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
Messages postés
556
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
31 octobre 2019
1
Cela rendra le nombre générée totalement aléatoire ? Par exemple on peut l'utiliser ainsi :

Randomize
Variable = int(Rnd * 5)

BILALoch
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Oui mais le mieux reste encore de le tester non?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
"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  !
Messages postés
556
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
31 octobre 2019
1
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
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
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.