网上说的有两种比较公平的算法一种是二倍均值法,一种是线段切割法下面我们介绍下两种算法的实现:
剩余红包金额M,剩余人数N那么:每次抢到金额=随机(0,M/N*2)
保证叻每次随机金额的平均值是公平的
假设10人红包金额100元
以此类推,每次随机范围的均值是相等的
缺点:除了最后一次任何一次抢到的金額都不会超过人均金额的两倍,并不是任意的随机
//这样就可以保证每个人抢到的金额都可以精确到小数点后两位 // 随机范围:[1剩余人均金額的两倍),左闭右开
把红包总金额想象成一条很长的线段而每个人抢到的金额,则是这条主线段所拆分出的若干子线段
当N个人一起抢紅包的时候,就需要确定N-1个切割点
因此,当N个人一起抢总金额为M的红包时我们需要做N-1次随机运算,以此确定N-1个切割点
随机的范围区間是[1,100* M)当所有切割点确定以后,子线段的长度也随之确定这样每个人来抢红包的时候,只需要顺次领取与子线段长度等价的红包金額即可
//这样就可以保证每个人抢到的金额都可以精确到小数点后两位 //红包个数和板砖个数的关系 //保证板子的位置不相同 //计算每个红包的金额,将两个板子之间的钱加起来 //将抢到的金额再除以100进行还原