Pourcentage de chance de dire quelque chose?
Comment puis-je le faire ..
- 80% du temps il dira
sendMessage("hi");
- 5% du temps, il dira
sendMessage("bye");
- et 15% du temps il dira
sendMessage("Test");
Faut - il faire quelque chose avec les mathématiques?random()? comme
if (Math.random() * 100 < 80) {
sendMessage("hi");
}
else if (Math.random() * 100 < 5) {
sendMessage("bye");
}
31
demandé sur
Isiah L
2012-07-19 04:05:43
3 réponses
Oui, Math.random()
est un excellent moyen d'y parvenir. Ce que vous voulez faire est de calculer un seul nombre aléatoire, puis de prendre des décisions en fonction de cela:
var d = Math.random();
if (d < 0.5)
// 50% chance of being here
else if (d < 0.7)
// 20% chance of being here
else
// 30% chance of being here
De cette façon, vous ne manquez aucune possibilité.
41
répondu
Ernest Friedman-Hill
2017-12-02 19:21:19
Pour des cas comme cela, il est généralement préférable de générer un nombre aléatoire et sélectionnez le cas en fonction de ce nombre unique, comme ceci:
int foo = Math.random() * 100;
if (foo < 80) // 0-79
sendMessage("hi");
else if (foo < 85) // 80-84
sendMessage("bye");
else // 85-99
sendMessage("test");
16
répondu
sarnold
2016-10-13 20:19:10
Voici une solution approximative très simple au problème. Triez un tableau de valeurs true/false au hasard, puis choisissez le premier élément.
Cela devrait donner une chance 1 sur 3 d'être vrai..
var a = [true, false, false]
a.sort(function(){ return Math.random() >= 0.5 ? 1 : -1 })[0]
-2
répondu
seanb123
2018-06-27 23:25:13