闲来无事,最近项目需求要写出用户登录首页来发现金红包,没有限额。我就自己稍微计算了一下如果有限额该怎么写。觉得这样与微信红包差不多。等项目需求完成以后。正好来博客贴一下我自己写的拆红包算法。个人觉得这个算法比较模拟现实抢红包规则。废话少说。先贴代码; 这套代码的思考逻辑 ...
在这里你只需要给出一个红包个数,给出一个红包总金额,通过一下算法可以分配指定个数的两位小数金额。 首先,定义一个可以获取指定取值区间的随机数数组。 定义一个可以随机获取红包的类,在这里我们用数据库的一个字段来记录随机金额,然后根据用户参加时的顺序,依次发放红包。 strHongbaoRecord就是记录每个人获得的红包金额,只需要在发红包时匹配发送就可以啦 经测试,随机计算出来的总数由于最后会进行 ...
2016-12-26 19:22 0 2071 推荐指数:
闲来无事,最近项目需求要写出用户登录首页来发现金红包,没有限额。我就自己稍微计算了一下如果有限额该怎么写。觉得这样与微信红包差不多。等项目需求完成以后。正好来博客贴一下我自己写的拆红包算法。个人觉得这个算法比较模拟现实抢红包规则。废话少说。先贴代码; 这套代码的思考逻辑 ...
简介网上说的有两种比较公平的算法,一种是二倍均值法,一种是线段切割法。下面我们介绍下两种算法的实现: 二倍均值法原理剩余红包金额M,剩余人数N,那么:每次抢到金额=随机(0,M/N*2)保证了每次随机金额的平均值是公平的假设10人,红包金额100元第一人:100/10*2=20,随机范围 ...
抢红包的需求分析 抢红包的场景有点像秒杀,但是要比秒杀简单点。因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。另外像小米这样的抢购也要比淘宝的要简单,也是因为像小米这样是一个公司的,如果有少量没有抢到,则下次再抢,人工 ...
最近关注了CSDN的程序员小灰,前两天发了个红包算法看着还蛮有意思的,自己使用C实现一下!(PS:后来才发现早已烂大街了……o(╥﹏╥)o) 规则: 1. 所有人抢到金额之和等于红包金额,不能超过,也不能少于2. 每个人至少抢到一分钱3. 要保证所有人抢到金额的几率相等 先做好 ...
抢微信红包如何抢到最多,参见文章-清华博士毕啸天分析 微信红包内部的算法规则,每个人当前能抢到的金额,服从一个0.01到当前剩余均值两倍的左开右闭区间的均匀分布 举例说明: 假设有100元钱,分给10个人。那么第一个人获得红包大小怎么计算呢?100/10 = 10元 ...
采用多线程模拟多人同时抢红包。服务端将玩家发出的红包保存在一个队列里,然后用Job定时将红包信息推送给玩家。每一批玩家的抢红包请求,其实操作的都是从队列中弹出的第一个红包元素,但当前的红包数量为空的时候,自动弹出下一个红包(如果有的话)。 关键思想: 1.抢红包涉及多人并发操作,需要做好同步 ...
我在知乎上看到这样一个问题微信红包的随机算法是怎样实现的? 有人说腾讯大致是这样实现的: 也有人做了正太分布、方差分析、回归分析、统计模拟等,图太长我就不贴了。 然而 所有答案都是“取时随机”,即设计“红包池”的概念,然后在抽取时随机取数。 所有答案都是“钱的随机”,即随机 ...