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 MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
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
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager