Initialiser un entier suivant des Probabilité

clyro -  
Defouille Messages postés 404 Statut Membre -
Bonjour,
j'aimerais créer un un entier qui vaut 1, 2, 3, 4, ou 5 avec une probabilité différente pour chaque nombre (genre avoir 1/3 de chance d'avoir 1 et 1/8 d'avoir 4 etc). Quelqu'un sait-il comment faire simplement?
merci
Configuration: Linux Suse
Firefox 3.5.6

4 réponses

  1. Defouille Messages postés 404 Statut Membre 54
     
    Quel langage ?
    0
  2. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    le meilleur moyen serait de réduire au PPCM tes probabilités(puisqu'il faut 1/1) et ensuite de faire un tirage aléatoire et en fonction du numéro sorti tu vois dans quel intervalle il se situe.
    0
  3. Defouille Messages postés 404 Statut Membre 54
     
    Le cumul de tes probabilités doit être égal à 1.

    Tu le met sur un diviseur commun du style :
    1 : 1/3 = 4/12
    2 : 1/4 = 3/12
    3 : 1/4 = 3/12
    4 : 1/12
    5 : 1/12

    total 12/12

    tu fais un random enter 1 et 12, et apres tu attributs en fonction d'un switch.

    switch(random)
    {
        case 1 :
        case 2 :
        case 3 :
        case 4 :
            return 1;
        case 5 :
        case 6 :
        case 7 :
            return 2;
        case 8 :
        case 9 :
        case 10 :
            return 3;
        case 11 :
            return 4;
        case 12 :
            return 5;
    }


    après faut adapter au langage

    :)
    0
    1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      merci d'avoir illustré mon propos ;-)
      0
    2. clyro
       
      ok je vois,
      en C++, pour le switch ça devrait marcher,
      par contre j'ai le droit de faire un code du style??
      switch(random)
      {
          case 1 :
          case 2 :
          case 3 :
          case 4 :
              return 1;break;
          case 5 :
          case 6 :
          case 7 :
              return 2;break;
          case 8 :
          case 9 :
          case 10 :
              return 3;break;
          case 11 :
              return 4;break;
          case 12 :
              return 5;break;
      }
      


      merci en tout cas,
      j'ai juste peur que ça soit un peu lent en traitement pour la machine
      0
  4. Defouille Messages postés 404 Statut Membre 54
     
    Tu peux rajouter un break, mais apres un return c'est inutile, par contre si tu remplace le return par une affectation c'est bon ^^
    0