Générer un nombre avec une probabilité
Résolu/Fermé
A voir également:
- Excel aléatoire avec probabilité
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
2 réponses
nagaD.scar
Messages postés
4272
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 janvier 2023
252
25 janv. 2017 à 17:56
25 janv. 2017 à 17:56
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
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
nagaD.scar
Messages postés
4272
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 janvier 2023
252
26 janv. 2017 à 09:02
26 janv. 2017 à 09:02
Créé un fichier .html et copie ce contenu:
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:
J'ai repris ta demande. Si tu veux ajouter 6 par exemple et mettre 5 et 6 à 10% ca ferai:
Note que le code se fiche totalement du pourcentage, si tu fais:
ca ne posera pas de problème.
naga
<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
25 janv. 2017 à 18:16
26 janv. 2017 à 08:25
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.
26 janv. 2017 à 08:27
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