Comment faire pour créer un tableau de int avec des nombres aléatoires en faisant en sorte qu'aucun des nombres à l'interieur du tableau ne soit égal à un autre.
Merci pour cette petite aide
Comment faire pour créer un tableau de int avec des nombres aléatoires en faisant en sorte qu'aucun des nombres à l'interieur du tableau ne soit égal à un autre.
Merci pour cette petite aide
tu peut utiliser la fonction rand() qui donne un float entre 0 et 1.
La FAQ C raconte tout ce qu'il faut pour générer correctement des nombres aléatoires.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Bonjour,
Comment obtenir un nombre aléatoire entre 0 et N-1 ?La FAQ C raconte tout ce qu'il faut pour générer correctement des nombres aléatoires.
Les nombres aléatoires en C
C'est du C mais je ne pense pas qu'il y ai de différence avec le c++.
après si vous souhaitez des valeurs uniques, il suffit de parcourir le tableau pour vérifier si l'entrée existe déjà et si c'est le cas, re-régénérer un nombre (attention, il y a un risque, certe improbable, de boucle infinie)
Je manque peut-etre quelque chose mais je ne vois pas pourquoi passer par des floats (surtout des float, on va deja perdre une partie des valeurs si on a une lib avec un generateur un peu performant qui a RAND_MAX qui vaut 1 << 31) va changer le probleme de non equirepartition de la version avec un %.Envoyé par gege2061
Comme habituel en C++, l'intervalle ne comprend pas high.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int randomInRange(int low, int high) { assert (high - low <= RAND_MAX); int max_usable = ((RAND_MAX)/(high-low)) * (high-low); int value, result; do { value = rand(); } while (value >= max_usable); return low + value % (high-low); }
J'oubliais: sauf si l'intervalle est grand (genre RAND_MAX/3 ou 4, ce qui est possible
avec des RAND_MAX petits comme le 32535 habituel), la pauvre qualite des generateurs habituels doit introduire autant de problemes que le biais de rand() %N. Donc si la qualite du generateur a de l'importance, en recuperer un en dehors de la lib standard...
Les générateurs classique avec hasard faible parcourent toutes les valeurs une fois avant de recommencer, donc il n'y a pas de biais au sens de l'écart-type ou de la moyenne.
Il me semble que je n'ai utilise le mot biais qu'en relation avec l'usageEnvoyé par Miles
avec un N qui n'est pas un diviseur de RAND_MAX. Et la il s'agit bien d'un biais favorisant les faibles valeurs (surtout quand N est grand). Ma remarque etait que si ce biais avait de l'importance, l'incertitude sur la qualite de rand() faisait qu'il etait mieux de passer a un generateur aux qualites connues (ca aide aussi a la reproductabilite des resultats et au debug quand on est en multiplaforme, mais c'est encore un autre sujet).
Code : Sélectionner tout - Visualiser dans une fenêtre à part rand() % N
Partager