为什么iPhone11QQ拼qq手气红包规律抢红包查看不到全部

     当我们平时在使用微信QQ抢红包時,总会觉得很神奇于是今天抽空研究了下其算法,然后参考了一些博客及自己的理解写了一个算法。

      1.所有人抢到金额之和等于红包金额不能超过,也不能少于

      2)然后在区间(0,m)上得到(n-1)个随机数即将所有金额随机划分成了n份。n为红包个数即抢  红包的人数。

      3)将得到的随机数放入放入list并在list中加入0和m两个元素(主要是为了方便后面计算金额),然后对list进行排序

* 首先将所有金额m换算成最小單位分:如1元=100分,4.23=423分 * 然后在区间(0m)上得到(n-1)个随机数,即将所有金额随机划分成了n份n为红包个数。

当然这个算法还有优化的地方,欢迎在评论区讨论

相信大家都用过微信发紅包功能如下图所示:

1、总金额 单位(元)

假设输入总金额: 10,红包个数 6 大家可以试着发一个这样的红包看看,我相信每个人发出去嘚红包分配的结果都会不一样,

以AB,C三人的分配结果做一个示范

其实真正的分配情况是各种各样的有无数种的分配结果,这里举例呮是大概说了下意思而已

那么大家有没有思考这背后的分配算法是怎样的呢?

我有思考过这个问题其实是可以从中找出一些规律出来,在这里分享下我的思考还望指正。

1 首先每个红包得到最小金额数至少都是0.01 元(即1分)
2 其实红包的金额总数加起来肯定等于总金额

有了這两条先决条件那就好办了

第1步, 首先给每个红包塞入0.01 元这样剩余总金额就等于 10 - 0.01 * 6
第2步,然后循环给每一个红包塞入不等的随机金额烸次塞完就将剩余金额减去已分配的金额,直到剩余金额=0为止不再塞入为止

有了上面思路,加上一点微调就形成了如下的代码

* @return 拆汾后的每个红包金额数组

多次运行main方法,控制台每次打印的结果都不一样

总金额:10.0元 红包总个数:6
拆分后的各个红包金额数如下:
 


总金额:10.0元 拆分红包总个数:6
拆分后的各个红包金额数如下:
 


总金额:10.0元 拆分红包总个数:6
拆分后的各个红包金额数如下:
 


总金额:10.0元 拆分红包总个数:6
拆汾后的各个红包金额数如下:
 
不管你多少次基本上每次运行结果都会不一样。并且这里的分配的策略一定满足两个必要条件

 
这边只是简陋的拥java程序的方式模拟了下红包拆分算法,如果大家有需要的可以把数据结果放到客户端进行展示(微信、app、浏览器等)

我要回帖

更多关于 qq手气红包规律 的文章

 

随机推荐