JavaScript:选择百分比数字



所以我遇到了一个与根据百分比选择获胜者有关的问题。

现在对于这种方法,我选择一个介于 1 - 0 之间的随机小数。示例:[.55 或 .33]当我生成这个数字时,百分比是根据随机小数点的选择来选择的。

例如:

数字计算如下:用户 1 几率> 25%。用户 2 几率> 75%。

所以我试图弄清楚如何根据创建的十进制来选择用户。

这里有一些JavaScript代码,我不知道其余的,我愿意接受任何可能的帮助。

<!DOCTYPE html>
<html>
<head>
<script>
function nowGet(){
    var picked = Math.random() * (1 - 0) + 0;
    var numb1 = .25;
    var numb2 = .75;
    if(numb1 >= picked && picked <= numb1){
        alert("25% chance wins with win %: " + picked);
    }else if(numb2 >= picked && picked <= numb2){
        alert("75% chance wins with win %: " + picked);
    }else{
        alert("Nothing was picked. win %: " + picked);
    }
}
</script>
</head>
<body>
<h1>My Web Page</h1>
<p id="demo">A Paragraph</p>
<button type="button" onclick="nowGet()">Try it</button>
</body>
</html>

您要实现的是从数字数组中获取最接近的数字。这是对您的问题的很好的回答:https://stackoverflow.com/a/8584940/612847

根据您的特定方案,下面是一个解决方案:

function closest (num, arr) {
    var curr = arr[0];
    var diff = Math.abs (num - curr);
    for (var val = 0; val < arr.length; val++) {
        var newdiff = Math.abs (num - arr[val]);
        if (newdiff < diff) {
            diff = newdiff;
            curr = arr[val];
        }
    }
    return curr;
}
var array = [.25, .75];
var number = Math.random();
var winner = closest(number, array);
console.log(winner);

最新更新