6

好的,想象一下我正在用 JavaScript 创建一个 Pokemon 游戏。我有一个这样的对象...

pokemon = {
  "pikachu": {hp: 100, probability: 0.1},
  "squirtle": {hp: 90, probability: 0.2}
};

我基本上需要一个函数来随机选择对象中的口袋妖怪,而且还基于概率。因此,在这种情况下,函数更有可能选择“squirtle”,因为它的概率高于“pikachu”。

4

2 回答 2

6

我会遍历口袋妖怪数组并将所有概率相加。调用这个total

然后生成一个介于 0 和 之间的值total。调用这个randVal

然后循环,再次将概率相加。称之为secondTotal
第一个概率secondTotal高于上面randVal的口袋妖怪是你选择的口袋妖怪。

于 2013-05-02T19:27:38.073 回答
2
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。使用此函数,您可以将概率堆叠在一起并返回项目,即随机数是其概率的范围。

于 2017-02-09T21:25:10.970 回答