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

4 réponses

Defouille Messages postés 404 Statut Membre 54
 
Quel langage ?
0
blux Messages postés 27910 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
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
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
blux Messages postés 27910 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
merci d'avoir illustré mon propos ;-)
0
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
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