计算胜利者,取决于每个球员的获胜机会

时间:2018-06-17 11:28:26

标签: javascript reactjs gambling

我的目标:每个玩家都可以选择下注,并且对于每个玩家,他们的下注获胜机会将被计算并显​​示在网页上。举例来说,如果玩家1下注5000个积分且总奖金为15000个积分,则玩家1有33%的机会获胜。在此计算之后,我想从所有下注的玩家中挑选一名获胜者。

游戏示例:

  • 总金额:15000学分。

  • 玩家1:3000积分 - >获胜的20%

  • 玩家2:1500积分 - >获胜的10%

  • 玩家3:7500学分 - >获胜的50%

  • 玩家4:1200积分 - >获胜的8%

  • 玩家5:1800积分 - >获胜的12%

我该如何处理从所有玩家中挑选随机赢家的方式?我想要生成一个随机数并将其与获胜机会进行比较。有什么提示吗?

1 个答案:

答案 0 :(得分:2)

由于舍入错误,百分比并不总是有效。例如,当总底池为1000时,下注1会产生0%的几率。

我建议在[0,tototalAmount]范围内绘制一个随机数



// player 1 bets 1500, player 2 bets 2300, player 3 bets 4000
    let bets = [1500,2300,4000];
    bets.forEach((e,i)=>bets[i]=(i==0)?e:e+bets[i-1]);
    //now bets is [1500,3800,7800]
    console.log(bets);

    let maxDraw = bets[bets.length-1];   

    //Draw
    let drawnNumber = Math.floor( Math.random() * (maxDraw) );
    
    // drawnNumber is in range 0~7799
    //so if the drawn number is in ranges:
    // 0~1499      : player 1 wins. odds are 1500/7800
    // 1500~3799   : player 2 wins 2300/7800
    // 3800 7799   : player 3 wins 4000/7800
    
    console.log("drawn number =",drawnNumber);

    // remember the above are checked in order.
    let winner = 0;
    bets.forEach((e,i)=>{
        if(!winner && drawnNumber<=bets[i])
            winner = i+1;
    });
    console.log("player",winner,"wins");
&#13;
&#13;
&#13;

这使得费率保持100%的比例。