Générer un nombre avec une probabilité [Résolu]

Azthorgis 182 Messages postés samedi 22 octobre 2016Date d'inscription 11 décembre 2017 Dernière intervention - 25 janv. 2017 à 17:43 - Dernière réponse : Azthorgis 182 Messages postés samedi 22 octobre 2016Date d'inscription 11 décembre 2017 Dernière intervention
- 26 janv. 2017 à 18:47
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
Afficher la suite 

6 réponses

Répondre au sujet
nagaD.scar 4180 Messages postés samedi 8 septembre 2007Date d'inscription 17 janvier 2018 Dernière intervention - 25 janv. 2017 à 17:56
0
Utile
3
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
Azthorgis 182 Messages postés samedi 22 octobre 2016Date d'inscription 11 décembre 2017 Dernière intervention - 25 janv. 2017 à 18:16
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
nagaD.scar 4180 Messages postés samedi 8 septembre 2007Date d'inscription 17 janvier 2018 Dernière intervention - 26 janv. 2017 à 08:25
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.
nagaD.scar 4180 Messages postés samedi 8 septembre 2007Date d'inscription 17 janvier 2018 Dernière intervention - 26 janv. 2017 à 08:27
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
Commenter la réponse de nagaD.scar
nagaD.scar 4180 Messages postés samedi 8 septembre 2007Date d'inscription 17 janvier 2018 Dernière intervention - 26 janv. 2017 à 09:02
0
Utile
1
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
Azthorgis 182 Messages postés samedi 22 octobre 2016Date d'inscription 11 décembre 2017 Dernière intervention - 26 janv. 2017 à 18:47
Merci beaucoup du temps que tu m'as accordé :))
Commenter la réponse de nagaD.scar