如何用Java编写公平与手速抢红包算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1385个文字,预计阅读时间需要6分钟。
在群里抢红包时,速度真的快吗?答案自然是,也并不是。都说了是拼手速,也可能是拼手速!不过,也有拼手速的方法:抢红包+双重平均值法(公平版)+线性切割法。
当我们在群里抢红包时真的是手速越快红包金额越大吗?
答案当然是并不是,都说了是拼手气,岂能是拼手速!
不过也可以有拼手速的方法
抢红包
- 二倍均值法(公平版)
- 线段切割法(手速版)
二倍均值法(公平版)
这是一种很合理很公平的抢红包算法了,绝对不会让你拼手速的,就别天真了。
在此我们假设
红包剩余金额为 M
红包剩余数量为 N
这种算法就是每次都在区间[0,M/N×2] 随机取一个数
假设100元红包发10个人,那么合理的做法应该是每个人领到10元的概率相同。
第一个人随机金额的范围为[0,100/10×2] ,也就是[0,20],这样平均可以领到10元,此时剩余金额为100-10=90。
第二个人随机金额的范围为[0,90/9×2] ,也就是[0,20],这样平均也可以领到10元,此时剩余金额为90-10=80。
本文共计1385个文字,预计阅读时间需要6分钟。
在群里抢红包时,速度真的快吗?答案自然是,也并不是。都说了是拼手速,也可能是拼手速!不过,也有拼手速的方法:抢红包+双重平均值法(公平版)+线性切割法。
当我们在群里抢红包时真的是手速越快红包金额越大吗?
答案当然是并不是,都说了是拼手气,岂能是拼手速!
不过也可以有拼手速的方法
抢红包
- 二倍均值法(公平版)
- 线段切割法(手速版)
二倍均值法(公平版)
这是一种很合理很公平的抢红包算法了,绝对不会让你拼手速的,就别天真了。
在此我们假设
红包剩余金额为 M
红包剩余数量为 N
这种算法就是每次都在区间[0,M/N×2] 随机取一个数
假设100元红包发10个人,那么合理的做法应该是每个人领到10元的概率相同。
第一个人随机金额的范围为[0,100/10×2] ,也就是[0,20],这样平均可以领到10元,此时剩余金额为100-10=90。
第二个人随机金额的范围为[0,90/9×2] ,也就是[0,20],这样平均也可以领到10元,此时剩余金额为90-10=80。

