根据百分比返回随机



我一直在想办法解决这个问题,但我遇到了一堵墙,我想我会在这里问。

下面是一个示例:

假设我有两个对象,食物和水,它们有不同的"机会"值。一个有20%的机会,一个有40%的机会。考虑到这个百分比,我如何能够在数学上增加他们的总数?

var food = {
    name:'food',
    total:0,
    chance:0.2
};
var water = {
    name:'water',
    total:0,
    chance:0.4
};

这就是我到目前为止所拥有的,但这并不是真正基于百分比的。寻找改进它的方法。

function test() {
    var x = parseFloat(Math.random().toFixed(1));
    if(x == food.chance) {
        food.total += 1;
    }
    if(x == water.chance) {
        water.total += 1;
    }
}

关闭。

function test() {
     var x = parseFloat(Math.random().toFixed(1));
    if(x < food.chance) {
        food.total += 1;
    }
    else if(x < food.chance + water.chance) {
        water.total += 1;
    }
}

两个注意事项:

  • 在连续概率中,你几乎从不检查一些随机输出等于某物;只是它在某物之间。几乎根据定义,前者是 0。

  • 仅供参考,这仍然留下了 40% 的既没有发生。

你需要这样的东西:

if ( (x >= 0.0) && (x < food.chance) ) food.total++;
else if ( (x >= food.chance) && (x < (food.chance+water.chance)) water.total++;

最新更新