Je cherche une fonction random en C/C++
Résolu
TexTwil
Messages postés
300
Statut
Membre
-
Giento -
Giento -
Salut,
je cherche une fonction random sous C/C++: le fonction random() du C++ renvoie une valeur entre 0 et X mais j'aurais besoin d'une fonction du type:
random(4,5,7,9) qui renverrait soit 4 soit 5 soit 7 soit 9. Je sais pas si ca existe et c pour ca que je demande.
merci
je cherche une fonction random sous C/C++: le fonction random() du C++ renvoie une valeur entre 0 et X mais j'aurais besoin d'une fonction du type:
random(4,5,7,9) qui renverrait soit 4 soit 5 soit 7 soit 9. Je sais pas si ca existe et c pour ca que je demande.
merci
18 réponses
Résumé de la discussion
Générer un nombre aléatoire à partir d'une liste de valeurs en C/C++, en renvoyant 4, 5, 7 ou 9, constitue le cœur de la discussion. Des réponses recommandent srand, rand avec modulo pour limiter l'intervalle; certaines proposent aussi d'utiliser une table des valeurs suivie d'un tirage d'un indice aléatoire simple. D'autres proposent une approche sans répétition en mélangeant les pointeurs vers les éléments, puis en permutant les choix tirés pour éviter les doublons potentiels ultérieurs. En cas de besoin plus avancé, certains évoquent des générateurs modernes comme mt19937 ou random_device, afin d'obtenir une meilleure qualité statistique tout en restant simple à intégrer.
-
En C, tu peut faire ainsi
Au début du programme, tu initialises le générateur de nombre aléatoire.
srand(time(null)); // Une fois suffit
ensuite, pour générer un nombre aléatoire, tu n'as plus qu'à taper :
int nb_aleatoire = Rand();
Si tu veut un nombre compris dans un interval, tu te sert de l'opérateur modulo.
exemple; tu veut un nombre entre 1 et 100.
int nb_alea;
nb_alea = (Rand() % 100) + 1;
Il te faudra aussi inclure les bibliothèques :
- stdlib.h
- time.h
J'espere que ca pourra t'aider-
Merci, mais vous n'avez pas du comprendre ce que je voulais. Je sais bien comment marche la fonction random( ), mais ce dont j'ai besoin n'est pas un nombre aleatoire entre 0 et x mais un nombre aléatoire choisi dans un ensemble précisé. Par ex, imaginez que je désire que cette fonction me renvoie un nombre appartenant à {1,5,7,6,9}. Je veux donc qu'elle renvoie soit 1 soit 5 soit 7 soit soit 6 soit 9 , et pas autre chose.
ok, merci -
voila ce que je te propose :
tout depend en fait de ton intervalle. est il constant, grand, a t il une grande amplitude,...
donc tu fais ton random (voir + haut) puis tu testes si le nbre renvoyé est dans ton intervalle avec :
typedef mon_intervalle {1,5,6,9,8};
Si c est le cas, tu le garde, sinon t en prend un autre (while).
-