美文网首页Web前端之路
车大棒浅谈微信红包随机分配猜想

车大棒浅谈微信红包随机分配猜想

作者: 车大棒 | 来源:发表于2017-01-06 17:16 被阅读116次

背景:

做为一名贫困的月光搬砖党,如果想每天加餐能够多加一块肉。那么就得靠微信红包手速抢红包,所以为了实现梦想。我给自己制定了目标,先抢够一个亿。

先抢够一个亿

可是这几天微信红包手气,完全都不忍直视呀。每次都手气最差,就连自己的发的红包自己抢,也还是抢几分钱。阿西吧!早餐包子钱都吃不上了。


我的包子呢?

微信红包顺序拆分猜想

所以当我看见隔壁老王正在吃着热腾腾的包子加豆浆,只能默默端起了水杯去饮水机旁边打水喝,打算用水安抚我抗议的胃。

之后一边静静灌水喝,一边开始思索起来。为什么老王运气好,总是能够得到最佳手气。而我却总是几分几分,这不科学。难得微信红包有什么奥秘?难得拆分红包的先后顺序会影响最佳手气的概率?

于是本人赶紧上网搜了搜,原来早在微信红包出来的时候。就有人已经对于微信红包的随机分配算法进行探讨,并给出了相应回复。(看看大佬们都关注点总是和我们这些弱渣关注点不一样,(ˇˍˇ) 向大佬们低头。)

图片来自知乎大神回复 知乎大神30人抢500测试2000次截图

可是很块我就发现,这个仅供参考的代码就有一点问题。根据图中的代码

  double min = 0.01;
  double max = _leftMoneyPackage.remainMoney / _leftMoneyPackage.remainSize * 2;

通过知乎大神上面的提供的代码可以看出,微信发放的红包中。单个红包最小金额为0.01元,而最大金额则为 剩余的金额 / 剩余未拆开红包的数量 之后再乘以2

即我发一个5毛钱的红包,分5人发送。那么其中手气最佳的最大金额应该是 5 / 5 * 2 = 2毛。
对此我在微信群,发了一个5毛红包做了测试:

心疼自己的手气

这里老王在专心吃的他的包子,因此没有去抢我发的红包。可是这样我还是一样拿不到手气最佳,心疼我这个手气......

这都是什么手气呀!

嗯额,不扯远了。通过这个手气最佳的金额来看 0.34 > 0.5/5 * 2 ,因此从这个红包的金额来看,现在微信单个红包最大金额不满足知乎提供的公式。(在当时是不是满足,我就不清楚了,毕竟是好几年的公式了!)

但是后续在多个群里测试多个5毛红包之后,发现这个关于第一个领红包、以及最后一个领红包先后顺序领红包,获得手气最佳的概率是一样的。

只能说跟欧洲人和非洲人有关,看来这几天得多到老王的位置吸吸欧气 ( ̄_, ̄ )

其他的随机算法实现

在通过惨痛红包测试之后,证明现在当初那个公式可能有误。但是肿么不能这样就结束了,总得搞点事情出来呀!(于是乎,翻阅半天的帖子之后,便回到当初知乎题主提问的问题上,尝试解决他的问题。~(~ ̄▽ ̄)~)

知乎题主的问题
解题:

尝试了一下,题主的问题。我好像能够解决呢!!

不明真相的吃瓜群众

说实话,还是觉得题主的这个随机分配想法还是很妙的,要是我就想不出来这种随机分配金额的办法来。也要向提问题主低头(*  ̄︿ ̄)!

function weixin1(money, num) {
    var arr1 = [];
    var price = 0;
    var ha = 0;
    var random = 0;
    for(var i = 0; i < num; i++) {
        if(i == num - 1) {
            arr1[i] = parseFloat(money.toFixed(2));
            break;
        }
        arr1[i] = parseInt(parseInt(money / (num - i) * 100) / 100 * (parseInt(Math.random() * 100) / 100) * 100) / 100;
        if(!arr1[i]){
            arr1[i] = 0.01;
        }
        money -= arr1[i];
        console.log(money);
    }

    for(var i = 0; i < arr1.length; i++) {    //用来检测最后的总数是否正确
        price += arr1[i];

    }

    function randomsort(a, b) {
        return Math.random() > 0.5 ? -1 : 1;
    }

    arr1.sort(randomsort);          //数组重新随机排列
    console.log(arr1)
    console.log(price);
}
weixin1(100, 5);
weixin1(0.5, 5);
浏览器运行控制结果

以上就是对微信红包随机分配猜想的胡扯篇,欢迎各位大佬们指导并给出相应的意见。(当然红包打赏我就更好了( ̄︶ ̄),哎呦!我又想起了我那么多可怜测试红包。)

向各位大佬低头

相关文章

  • 车大棒浅谈微信红包随机分配猜想

    背景: 做为一名贫困的月光搬砖党,如果想每天加餐能够多加一块肉。那么就得靠微信红包手速抢红包,所以为了实现梦想。我...

  • 微信红包算法 - OC

    知乎-微信红包算法 一个简单的分配算法:随机分配n次把每次分配的部分减去,在进行随机分配分配过程中,考虑好,分配为...

  • 微信红包金额随机分配

    一个随机红包金额分配 分配:红包里的金额怎么算?为什么出现各个红包金额相差很大? 答:随机,额度在0.01和剩余平...

  • 还在抢0.01元的红包吗,不如来这里给你包个大红包

    原来微信红包不是随机分配?这些人最容易抢到大红包! 国庆节过完不久,大家有没有抢到红包呢。 如今红包作为一种喜闻乐...

  • 正态分布

    最近公司产品上线一个类似于微信抢红包功能,需要实现红包金额的随机分配算法。 基本约束: 发放红包时,每个人所能得到...

  • 真相|原来微信红包不是随机分配金额

    随着微信社交的普及,微信红包也成为朋友间互动的一种方式,被很多人接受和喜爱。不管是亲戚朋友,还是刚认识的同事,发个...

  • 随机红包分配算法

    红包随机分配的入参,一般只有两个,总金额与抢红包的总人数。难点是要保证在最后一个人抢完之前,不能让剩余钱包为空。所...

  • 微信红包随机算法初探

    本文简书备份地址:微信红包随机算法初探 最近看了一篇文章,讲微信红包随机算法的。感觉很不错,所以自己实现了下,并进...

  • 基于微信随机红包算法

    微信随机红包算法, 前提为知道红包的数量, 红包总金额, (红包最小金额, 0.01)为防止浮点数计算出现问题,此...

  • 根据抢微信红包的经验

    根据抢微信红包的经验,红包里的钱数,应该是电脑随机派发的,是概率的随机性。 真实的随机可能只存在于量子力学,最典型...

网友评论

    本文标题:车大棒浅谈微信红包随机分配猜想

    本文链接:https://www.haomeiwen.com/subject/iqitbttx.html