Je cherche une fonction random en C/C++

Résolu
TexTwil Messages postés 300 Statut Membre -  
 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

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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Hilikus
     
    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
    63
    1. TexTwil Messages postés 300 Statut Membre 21
       
      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
      0
    2. chmanu > TexTwil Messages postés 300 Statut Membre
       
      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).
      0