你如何使一个变量有50%的可能性成为一个值,50%成为另一个值的几率?

时间:2014-10-09 15:16:13

标签: javascript html variables

 a = document.getElementById("find").value
    if (a == 'Spark' || a == 'Fire') {
        var monster = x
        var player = y
        var damage = Math.floor(Math.random() * 25)
        var damageplayer = Math.floor(Math.random() * 30)
        alert('Your squad succeeded the enemy has ' + (x = x - damage) + ' original territories!');
    alert ('You have' + (y = y - damageplayer) + 'original territories!'); }

这是我上面的代码,我试图让它成为50/50几率,无论损坏是否= Math.Floor(math.random()* 25)或= 0。我尝试将数学.random乘以1然后数学。随机25,并没有奏效。你怎么做到50%的时间它会等于0而另外50%的时间等于math.random * 25?

6 个答案:

答案 0 :(得分:8)

这是一种方式:

var coin = function() {
    return (Math.random() < 0.5 ? 0 : 1);
}

var damage = 25*coin();

答案 1 :(得分:2)

请勿使用floor(),因为它始终会向下舍入。使用round()

var zeroOrOne = Math.round(Math.random());
var damage = zeroOrOne * Math.floor(Math.random() * 25);

或者,如果你是那些“尽可能多地将代码填入一行”的人之一:

var damage = Math.round(Math.random()) * Math.floor(Math.random() * 25);

答案 2 :(得分:2)

有时候我想知道Math.random是多么随机......

替代方案:

return(new Date()。getMilliseconds()%2);

答案 3 :(得分:1)

damage = (Math.random() < 0.5) ? 0 : (Math.random() * 25);

答案 4 :(得分:0)

尝试

var aux = Math.random()

if (aux < 0,5){

    aux = 0

}else{

   aux = damage
}

然后你可以使用var aux代替伤害

答案 5 :(得分:0)

我找到了一种方法:

Math.random();
if(Math.random() >= 0.5){ \\set variable to value A }
else { \\set variable to value B }

由于Math.random会随机选择一个01,我会在0.5处设置支票。