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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 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 元,这样等的话,世界灭亡也够分。等待显示你排在多少人后面领取红包,需要多少秒才能领到,用户可以离开页面,当用户第二天领取的时候显示当前排在多少位后面,无法领取。

4年前 评论

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

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