好吧,想象一下,我正在用JavaScript创建一个口袋妖怪游戏。我有一个像这样的对象......
pokemon = {
"pikachu": {hp: 100, probability: 0.1},
"squirtle": {hp: 90, probability: 0.2}
};
我基本上需要一个函数来随机选择对象中的小精灵,但也要基于概率。因此,在这种情况下,函数更可能选择“squirtle”,因为它的概率高于“pikachu”。
答案 0 :(得分:7)
我会遍历口袋妖怪数组并将所有概率加起来。请拨打此total
然后生成0到total
之间的值。请拨打此randVal
然后循环,再次添加概率。请致电此secondTotal
第一个将secondTotal
推到randVal
之上的小精灵是您选择的宠物小精灵。
答案 1 :(得分:1)
function pickAWinningItem(data) {
var winner = Math.random();
var threshold = 0;
for (let i = 0; i < data.length; i++) {
threshold += parseFloat(data[i].prob);
if (threshold > winner) {
return data[i]
}
}
}
所有概率的总和必须等于1.使用此函数,您可以将概率叠加在一起并返回项目,即随机数是其概率的范围。