Signaler

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

Posez votre question Azthorgis 172Messages postés samedi 22 octobre 2016Date d'inscription 10 juin 2017 Dernière intervention - Dernière réponse le 26 janv. 2017 à 18:47 par Azthorgis
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 
Utile
+0
plus moins
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 172Messages postés samedi 22 octobre 2016Date d'inscription 10 juin 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
Répondre
nagaD.scar 4109Messages postés samedi 8 septembre 2007Date d'inscription 11 mai 2017 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.
Répondre
nagaD.scar 4109Messages postés samedi 8 septembre 2007Date d'inscription 11 mai 2017 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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 172Messages postés samedi 22 octobre 2016Date d'inscription 10 juin 2017 Dernière intervention - 26 janv. 2017 à 18:47
Merci beaucoup du temps que tu m'as accordé :))
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !