Générer un nombre avec une probabilité

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour
Je cherche un moyen de générer un nombre en fonction d'une probabilité et d'un intervalle
Par exemple, je veux un nombre entier entre 1 et 5, avec les probabilités de tirage suivantes :
1: 10%
2: 15%
3: 5%
4: 50%
5: 20%

Voila si possible une formule, une appli, un logiciel que vous avez a me proposer je serais content :)
Bonne journée

2 réponses

  1. nagaD.scar Messages postés 4500 Statut Membre 255
     
    Salut,

    Comme solution rapide, le plus simple est de remplir un tableau de int de 100 lignes. En prenant ton exemple il y aura 10 fois 1 dans le tableau, 15 fois 2, etc.

    ensuite tu tire un rand compris entre 0 et 99 (ou 1 et 100) et tu récupère la valeur dans le tableau.

    naga
    1
    1. Utilisateur anonyme
       
      C'est un peu compliqué au niveau de la portabilité car c'est pour faire du jeu de rôle donc avoir un tableur à portée est un peu compliqué, il me faudrait un algorithme et au mieux une appli portable
      0
    2. nagaD.scar Messages postés 4500 Statut Membre 255
       
      Tu n as pas beaucoup de choix, déjà que l aléatoire n'existe pas en info (en fait on se base sur un timestamp), du coup il n y a pas de méthode pour faire ce que tu veux.

      et qu'entends tu par portabilité? un tableau de 100 int c'est rien du tout (si t es sur une plateforme 64bits ca représente 800 octets (de mémoire ca doit être ca - et la moitié sur du 32), avoir un bloc de texte prendra beaucoup plus de mémoire.
      0
    3. nagaD.scar Messages postés 4500 Statut Membre 255
       
      oh pu**** je viens de tilter. tu me parles d un tableur oO en fait c est pour un jeux de rôle irl !

      Bah le plus simple sera de faire ca en javascript, tu pourra changer tes proba à la volée sans recompiler et l executer avec n import quel navigateur (pc ou smartphone, tout os).

      Si j ai le temps j en ferai un petit
      0
  2. nagaD.scar Messages postés 4500 Statut Membre 255
     
    Créé un fichier .html et copie ce contenu:

    
    <HTML>
    	<BODY onload="loadPage()">
    	
    	
    	<button type="button" onClick="getAndPrint()" style="position:absolute;height:50%;width:100%;">Get rand</button>
    
    	<input type="text" id="res"  style="position:absolute;height:50%;width:100%;top:50%;font-size: 20;text-align: center;" />
    	<SCRIPT>
    	
    	loadPage=function(){
    		var oAr = [ [1,10] , [2,15] , [3,5] , [4,50] , [5,20] ]
    		setArr(oAr);
    	}
    	
    	var stArr;
    	setArr = function( origArray ){ 
    		stArr=Array();
    		for(i = 0 ; i < origArray.length ; i++) {
    			for(j = 0 ; j < origArray[i][1] ; j++) {
    				stArr.push(origArray[i][0]);
    			}
    		}
    	}	
    	
    	getVal = function(){
    		return stArr[Math.floor((Math.random() * stArr.length) + 1)];
    	}
    	
    	getAndPrint = function() {
    		var val=getVal();
    		document.getElementById('res').value=val;
    	}
    	
    	</SCRIPT>
    	</BODY>
    </HTML>
    
    


    Lorsque tu clic sur le bouton, ca affichera le nombre en prenant en compte ce que tu veux.

    Pour changer les récurence, ajouter des nombres, etc, c'est à cette ligne:

    var oAr = [ [1,10] , [2,15] , [3,5] , [4,50] , [5,20] ]


    J'ai repris ta demande. Si tu veux ajouter 6 par exemple et mettre 5 et 6 à 10% ca ferai:

    var oAr = [ [1,10] , [2,15] , [3,5] , [4,50] , [5,10] , [6,10] ]


    Note que le code se fiche totalement du pourcentage, si tu fais:

    var oAr = [ [1,30] , [2,15] , [3,5] , [4,50] , [5,10] , [6,80] ]


    ca ne posera pas de problème.

    naga
    0
    1. Utilisateur anonyme
       
      Merci beaucoup du temps que tu m'as accordé :))
      0