Même expérience chez moi... et pour
(int)((double) rand() / (double)RAND_MAX * (N-i))
c'est aussi le même chiffre qui sort en premier.
(Et avec cette méthode, je ne vois pas ce qui peut faire que ça soit toujours le même nombre qui sorte en premier !)
EDIT : ça y est j'ai compris, le premier nombre renvoyé par la fonction rand() n'est pas le même, mais comme l'éxécution du programme génère des "graines" proches les unes des autres (j'ai fait les tests dans la même minute), le premier nombre renvoyé par rand() varie peu (9647, 9650, 9658...), ce qui fait qu'avec cette méthode on a toujours le même arrondi.
Je vais chercher une méthode pour corriger le problème.
EDIT2 : j'ai trouvé une solution : au lieu de faire un srand(time(NULL)), faire un srand(time(NULL)*1000), ainsi la graine choisie est plus différente entre deux éxécution qu'avant, et on des des premiers nombres générés différents.
Partager