Bonjour je voulais savoir sil est possible de faire deux rand different pour utiliser un dans une fonction et un autre dans un autre fonction . Jai essayé mais celui-ci reproduit la meme chose dans mes deux fonction.
Version imprimable
Bonjour je voulais savoir sil est possible de faire deux rand different pour utiliser un dans une fonction et un autre dans un autre fonction . Jai essayé mais celui-ci reproduit la meme chose dans mes deux fonction.
Bonjour,
As-tu bien appelé srand() au préalable ?
Sinon tu as des entrées sur srand dans la FAQ C.
Pourquoi ne pas utiliser les nombres aléatoire tels qu'ils le devraient en C++ plutôt que d'utiliser ce qui est fourni par le C ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12 #include <random> void fn1(unsigned int x); void fn2(unsigned int x); void sample() { std::mt19937 eng; std::uniform_int_distribution<unsigned int> rnd(0, 10); fn1(rnd(eng)); fn2(rnd(eng)); }
J'ai ça dans mon main
et dans une de mes fonctions j'aiCode:srand(static_cast<unsigned int>(time(0)));
j'ai associé des chiffres entre 0 a 4 à des déplacementsCode:random=rand() % 4;
ma première fonction de déplacement marche mais si je copie la même chose
dans mon autre fonction de déplacement celui-ci va copier l'autre alors j'ai deux personnages qui bougent de la même manière comme si le rand était le même pour les deux ce que je ne veux pas du tout.
Tiré du man de rand:
Citation:
Si vous désirez engendrer un entier aléatoire entre 1 et 10, vous devez toujours procéder en utilisant les bits de poids forts, comme dans :
j=1+(int) (10.0*rand()/(RAND_MAX+1.0));
et jamais ainsi :
j=1+(rand() % 10);
(car cette derniere version utilise les bits de poids faibles).