jjacques68 Posté(e) le 1 octobre 2017 Signaler Partager Posté(e) le 1 octobre 2017 (modifié) Bonsoir à tous : Je constate une chose étrange avec la fonction random. si j’essaye ceci : print(math.random(10)) Après plusieurs lancement,s je me retrouve toujours avec la même valeur. D’après mes recherches, cela viendrait du fait qu’il faille initialiser le générateur avec math.randomseed(). Donc je fais ça : math.randomseed(os.time()) print(math.random(10)) Et là ça semble mieux fonctionner, mais j’ai toujours les mêmes valeurs au démarrage. Certain dise qu’il faut ajouter math.random() 3 x de suite encore avant... Quelqu’un a des explications à me donner ? Et/ou a une solution pour avoir un vrai générateur de nombre aléatoire ? C’est étrange, j’ai constaté exactement le même problème avec d’autres languages (Windev, VBA access). Je me demande si nos supers ordinateurs de la mort qui tue sont capables de générer un nombre aléatoire ? ... Après réflexion faite, il y a un algorithme derrière, et celui-ci est donc toujours identique ?!!!? Donc le nombre tiré est toujours le même ?! Du moins pour le premier ! Modifié le 1 octobre 2017 par jjacques68 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 2 octobre 2017 Signaler Partager Posté(e) le 2 octobre 2017 Les fonctions aléatoires n'existent pas en informatique. Ce sont des fonctions pseudo-aléatoires. Donc si tu fais print(math.random(10)) C'est normal que tu obtiennes toujours le même résultat. Par contre, si tu fais print(math.random(os.time())) tu obtiendras des résultats différents à chaque fois. 3 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 2 octobre 2017 Signaler Partager Posté(e) le 2 octobre 2017 J'allais répondre la même chose que Berale Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 2 octobre 2017 Auteur Signaler Partager Posté(e) le 2 octobre 2017 alors pour bien compléter la chose, il faut faire une tempo d'une seconde d'un tirage à l'autre (vu que LUA fonctionne à la seconde) Voilà mes essais très rapides et plutôt concluant : function Randomize(x) math.randomseed(os.time()) return math.random(x) end while true do print(Randomize(10)) fibaro:sleep(1100) end Et là j'ai une suite de nombre pseudo-aléatoire. En dessous d'une seconde, y a de la répétition. Voilà maintenant je peux tirer un numéro au sort dans une table... Merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés