求教关于微信领红包的逻辑问题

微信领红包
需求:一天固定总金额1300块钱,每个红包价格是1-100元,每天不管多少人来领,都要领到钱
如果人数固定的话还好办。但是现在不知道人数,我就不知道该怎么写了 按照时间预算?万一某个点领红包的人很多又怎么办?求大佬赐教

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 14
lochpure

我在想100元相当于10000分,一天有86400秒,微信红包最小是一分,所以问题来了,如果每秒都有人领怎么办 :joy:

5年前 评论
minororange 5年前
追风去 (楼主) 5年前
minororange 5年前
追风去 (楼主) 5年前
minororange 5年前
追风去 (楼主) 5年前
minororange 5年前
追风去 (楼主) 5年前

领取的时候来个排队 :smile:

5年前 评论

不管多少人,都要给到钱?微信红包我记得最低金额是1元,每天1300元,那就是每天保证最多有1300人领到红包
可以这样,先预计流量,如果流量很多,那每天前1300名,每人1元搞定。如果不多,差多少直接在群里说,我们帮你分了 :smiley:

5年前 评论

这个需求不是很矛盾吗?

  1. 没人最低1块钱
  2. 总金额1300
  3. 不管多少人

请问第1301个人来领,到底该给不给? :see_no_evil:

5年前 评论

总金额 1300 RMB,每份 1-100 RMB

如果要把 1300 RMB 领完:

  • 按 1 分,领取人数: 1300 人(也是最大)
  • 按 100 分,领取人数:13 人

每天的人数不固定,但红包金额有固定范围,所以 1300 RMB 多数时间是领取不完滴,原因:
1、领取红包的时间为 24 小时,并不知道用户什么时候会领取
2、任何时间都会被假定今天领取人数为 1300 人的最大领取人数(可动态设定最大人数)

要达到红包随机需要解决的问题:

  • 1、领取的红包金额不能依赖时间(某个时间点领取的金额高或低)
  • 2、红包金额不能依赖剩余金额

通过以上分析,问题1、2解决方案:

  • 1、把每个红包的金额分成几个阶梯,如:<=10、<=30、<=50、<=80、<=100
  • 2、设定每个阶梯的红包最大数量(计算)
  • 3、随机得到红包阶梯,再随机阶梯红包金额

万一某个点领红包的人很多又怎么办?

这并不是复杂的问题,相信你自己完全可解决

注意:

这方案根据你的提案,自己分析得到的,只提供思路未考虑过多细节,是未经过验证仔细分析的方案,思路只供参考

5年前 评论

根据每天的流量,先提前分好呗。不可能实现不管多少人领都有钱的 死了这条心吧 ,钱和人都是整数

5年前 评论

有个漏洞,老板没说每天的 1300 元要都发光,但确规定了最小和最大的金额,最多有 1300 个人来领取,为了看起来好看一些,所以你就按 1290 人提前计算好,每个人随机的红包金额(大概都是1.xx元),来人就按顺序发放。
如果没有领完,就剩下了呗,还给老板节省活动经费了。

后续再根据前一天的用户数量,动态预测当天的领取人数即可。

不是所有需求技术都可以解决的!!!有一些需求技术无法解决,只能在需求端和运营端去解决。

5年前 评论

需求无法实现的,赶紧给怼回去吧,哪有既限制总金额,每人有最低额度,又不限制人数的,你这个需求解决方法就只能是干需求,要么加钱,要么限制人数!!!

5年前 评论

@zhangbobo 说得好 程序员不应该看到需求 就想着这个该怎么做 而是先判断这个需求逻辑上是否可行 业务上是否可行

5年前 评论
tudou

1300元 微信金钱单位最小0.01元 最多13万人领取

5年前 评论

你可以设想这是一个砍价操作,设立每次最低领取金额1
每次访问验证是否只剩下最低金额1,也就是最后一个红包,不是再随机处理一个金额出去

但是现在你这需求逻辑就有问题
设立每天1300的总金额,还要每个人进来都领到最少1的金额,那如果有一万个人怎么能够分

5年前 评论

我们换个思维来考虑这个问题,那么这个问题老板要表达的想法就是,每天有人来,来的人都有红包拿,红包的额度根据人数分配多少,这个时候,我们就想到了奖池开奖的形式,那么问题就迎刃而解了,抢红包的的时候给个提示,根据人数预计能得到多少红包。

5年前 评论

分红包这个简单,一天有60x60x24=86400秒。一天有1300元总额,每人最少分1元,最多分100元,那就简单了。第一个用户需要等待【(86400-今天已消耗秒数) / 剩余总额】秒数,这样用户无论多少,一天1300都够分的,如果第一天有100万人,那就等待的时间无限延长。红包总额每天只加1300元,这样等的话,世界灭亡也够分。等待显示你排在多少人后面领取红包,需要多少秒才能领到,用户可以离开页面,当用户第二天领取的时候显示当前排在多少位后面,无法领取。

3年前 评论

@meooo 楼主说了要当场知道金额

3年前 评论
meooo 3年前
meooo 3年前
skys215 (作者) 3年前
meooo 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!