二倍均值法

剩余红包金额为M,剩余人生为N,那么有如下的公式:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

每个人最少得到0.01元,那么

每次抢到的金额 = 随机区间 (0.01, M/N *2)

举个例子:

假设有10个人,红包金额为10元,

第1个人抢到的金额范围为 (0.01, 10/10 * 2),平均为1 元。

第2个人抢到的金额范围为 (0.01, 9/9 * 2),平均为1 元。

...

第10个人抢到的金额范围为 (0.01, 1/1 * 2),平均为1 元。

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script>
            window.onload=function(){
                var oBtn=document.getElementById('btn');
                var oTxt=document.getElementById('txt1');
                var oNum=document.getElementById('num');
                var oUl=document.getElementById('ul1');
                var min=0.01;
                
                function randomNum(min,max){
                    return Math.floor((Math.random()*(max-min)+min)*100)/100;
                }
                
                function money(val, num){
                    var nowMoney=0;
                    var arr=[];
                    while(true){
                        if(num==1){
                            arr.push(val.toFixed(2));
                            return arr;
                        }
                        nowMoney=randomNum(min,(val/num)*2).toFixed(2);
                        arr.push(nowMoney);
                        val-=nowMoney;
                        num--;
                    }
                }
                
                oBtn.onclick=function(){
                    oUl.innerHTML='';
                    var val=parseFloat(oTxt.value);
                    var num=parseInt(oNum.value);
                    var newArr=money(val,num);
                    
                    for(var i=1; i<=num; i++){
                        var oLi=document.createElement('li');
                        oLi.innerHTML='第'+i+'人抢到'+newArr[i-1]+'元';
                        oUl.appendChild(oLi);
                    }
                    console.log('抢最多的为:'+Math.max.apply(null,newArr)+'抢最少的为:'+Math.min.apply(null,newArr))
                    
                }
            }
        </script>
    </head>
    <body>
        <input type="text" id="txt1" />
        <input type="text" id='num' />
        <input type="button" value="生成" id="btn" />
        <ul id="ul1"></ul>
    </body>
</html>

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄