random en C++ - C++ - Programmation
Marsh Posté le 07-06-2005 à 15:15:01
Sujet méga redondant..
http://forum.hardware.fr/hardwaref [...] 0779-1.htm
Marsh Posté le 07-06-2005 à 15:18:16
j'ai déjà cherché sur ce topic, il me met qu'il connait pas random, je dois inclure quelle bibliothèque?
Merci
Marsh Posté le 07-06-2005 à 15:18:35
faut initialiser le seed avec srand(). Combine le avec la fonction time() pour avoir un seed totalement aleatoire.
Marsh Posté le 07-06-2005 à 15:19:11
Aldarek a écrit : j'ai déjà cherché sur ce topic, il me met qu'il connait pas random, je dois inclure quelle bibliothèque? |
Citation : |
Marsh Posté le 07-06-2005 à 15:20:46
ReplyMarsh Posté le 08-06-2005 à 10:39:26
J'ai remarqué quelque chose avec ce bout de code
Code :
|
C'est que le nombre aléatoire va toujours croissant, jusqu'à arriver à 100 pour ensuite repartire de 1 ou un autre nombre et croitre encore. En gros, il ne décroit jamais.
Auriez vous une solution à ce problème? Merci
Marsh Posté le 08-06-2005 à 11:01:17
|
sur PPC G5 Mac OS X 10.4 gcc 3.4
des explications ? ca m'etonnes :|
Marsh Posté le 08-06-2005 à 11:17:17
Déja, c'est une très mauvaise idée de générer des nombres aléatoires entre 1 et 100 (compris) en utilisant l'instruction " rand()%100)+1 ". Cela a déja été dit plusieurs fois sur ce forum.
Mathématiquement ce que tu me dis m'étonne. En plus, je viens de faire tourner ton programme et je n'ai pas ce comportement !
Marsh Posté le 08-06-2005 à 12:44:50
fe un
Code :
|
puis
Code :
|
ca devrai marcher
en tout cas ca marche bien chez moi
Marsh Posté le 08-06-2005 à 13:26:26
shikra a écrit : euh enleve les 1. g c pas ce que ca fout la |
srandom() et random() sont des fonctions POSIX, ce qui signifie qu'elles ne sont pas forcément présentes sur tous les systèmes.
Contrairement à srand() et rand().
Marsh Posté le 08-06-2005 à 14:09:20
Oui parce que quand je met random, il me dit qu'il connais pas...
Marsh Posté le 08-06-2005 à 20:57:47
Joel F a écrit :
|
t'as essayé avec une grosse valeur pour N ?
Marsh Posté le 08-06-2005 à 21:07:17
déjà, en mettant N pas une puissance de 2, les deux méthodes donnes de bien meilleurs résultats. après, my_better_rand gagne quand même la plus part du temps.
Marsh Posté le 08-06-2005 à 21:14:37
y a un truc qui m'échappe. pour calculer la moyenne, je fais
somme( valeurs ) / (N * len(valeurs))
comment ça se fait que se truc soit pas toujours compris entre 0 et 1 ? y a peut etre tout simplement un problème d'overflow.
testons en python (qui a des bigint)
Code :
|
better gagne
Marsh Posté le 08-06-2005 à 21:16:18
enfin y pas tellement de différence que ça remarque. cela dit, avec N une puissance de 2, la différence est plus flagrante.
Marsh Posté le 07-06-2005 à 15:07:13
Pourquoi lorsque j'utilise une de ces deux méthodes :
Il me sort toujours le même nombre? Je sais qu'il y a une histoire de nombres pseudos aléatoires, et comment faire pour avoir un nombre différent à chaque fois??
Merci d'avance