微信红包的分配算法,在知乎上已经有人讨论过了,详见《微信红包的随机算法是怎样实现的?》。基本的原则是:红包分配的钱数满足截尾正态随机数分布。 大致为在截尾正态分布中取随机数,并用其求和数除以总价值,获得修正因子,再用修正因子乘上所有的随机数,得到红包价值。 这种分布意味着:低于平均值的红包 ...
一 完全随机红包 给定总金额,每个红包的金额范围和红包的个数,随机生成符合条件的红包金额。 转成数学语言:n个随机数,总和为sum,每个随机数的范围为 min,max 。求随机方案。 这里先声明一下,什么样的算法是合理的呢,基本需要具备以下两个特点: 随机。这里认为生成红包金额一定要随机,即不能出现大量红包金额落在同一值 分布。范围内金额都有得到分配的机会。 一 方案一: 其实对于金钱应该用dec ...
2017-06-28 17:35 2 2942 推荐指数:
微信红包的分配算法,在知乎上已经有人讨论过了,详见《微信红包的随机算法是怎样实现的?》。基本的原则是:红包分配的钱数满足截尾正态随机数分布。 大致为在截尾正态分布中取随机数,并用其求和数除以总价值,获得修正因子,再用修正因子乘上所有的随机数,得到红包价值。 这种分布意味着:低于平均值的红包 ...
抢红包的需求分析 抢红包的场景有点像秒杀,但是要比秒杀简单点。因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。另外像小米这样的抢购也要比淘宝的要简单,也是因为像小米这样是一个公司的,如果有少量没有抢到,则下次再抢,人工 ...
前段时间有个项目需要用到红包算法,本以为简单,细想之下有点复杂。于是就百度了一下,没想到查出了不少,有些写的很复杂。由于时间有点紧,我就找了一个简单点的。然后参考着写一个。参考的地址是:https://blog.csdn.net/gorgle/article/details ...
...
场景: 生成10个随机红包, 奖池总金额10000, 最小500, 最大1000,奖池全部分配完。 分析: 第一想法简单, 直接生成500-1000之间的随机数,直接生成10个, 直接上代码。这种写法的问题在于最后一个金额生成的时候会出现问题,会有出现超过最大金额的可能性 ...
public $bonus;//红包 public $bonusNum;//红包个数 public $bonusMoney;//红包总金额 public $moneySingleMax;//单个红包最大限制 public $moneySingleMin ...
2017年1月14日 14:19:14 星期六 一, 整体设计 算法有很多种, 可以自行选择, 主要的"架构" 是这样的, 用redis decr()命令去限流, 用mysql去记录各种需要的数据 二, 红包算法 简便起见, 红包金额用整数表示, 假设每个红包里边有x个糖豆, 每个人最少 ...
public class hongbao { @Test public void testHongbao(){ hb(100, 100, 0.01);//金额,个数,最少值 } v ...