首页 .Net 二倍均值法,随机拼运气算法

二倍均值法,随机拼运气算法

优势在于不需要先把每个人得多少算出来,只有拆红包的时候才会算出这个人得多少。
同时保证了每个人拼手气得到的平均值相同
设有10个人,红包总额100元。
100/10X2 = 20, 所以第一个人的随机范围是(0,20 ),平均可以抢到10元。
假设第一个人随机到10元,那么剩余金额是100-10 = 90 元。

90/9X2 = 20, 所以第二个人的随机范围同样是(0,20 ),平均可以抢到10元。以此类推,每一次随机范围的均值是相等的。

publicstaticvoidMain(string[]args)
{
intremainNum=10;
intremainMoney=100;
for(inti=0;i<10;i++)
{
intt=GetRandomMoney(refremainNum,refremainMoney);
Console.WriteLine($"第{i}领取:{t}分");
}
}
publicstaticintGetRandomMoney(refintremainNum,refintremainMoney)
{
if(remainNum==1)
{
remainNum--;
returnremainMoney;
}
Randomrandom=newRandom();
//最小值,确保不会出现0
intmin=1;
//剩余份额的二倍最大值
intmax=remainMoney/remainNum*2;
//随机产生
intmoney=random.Next(0,max);
money=money<min?min:money;
remainNum--;
remainMoney-=money;
returnmoney;

}


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。