微信红包内部的算法规则,每个人当前能抢到的金额,服从一个0.01到当前剩余均值两倍的左开右闭区间的均匀分布
举例说明: 假设有100元钱,分给10个人。那么第一个人获得红包大小怎么计算呢?100/10 = 10元。这是期望值。从0.01到20的区间中(其中20=10乘以2)随机抽取一个数,就是第一个人获得红包的大小;
假设第一个人获得了8元,那么剩下的92元平均分给9个人,这九个人平均获得红包大小为10.22元,那么第二个人的红包大小均匀分布于0.01元到20.44元的区间中;
依次类推。算法保证最后一个人至少抽到0.01元
基于以上算法思想,这里用Java语言进行封装实现(原创,转载请注明出处)
1. 我们的红包类封装以下属性
2. 红包数据的有效性简单校验的方式;
两个原子方法(明细数据和最后的计算最佳)
红包算法,其实就这一点点代码是真正的计算红包金额
对外暴露被调用的方法
main()方法调用简单测试
运行测试结果: 我是不是小气了点 15个人分20块
若想直接要该源代码,请评论留下邮箱.