随着微信的重要性日益显现,其功能也日趋完善,而且微信红包就是最受欢迎的功能之一,大家知道了微信红包随机分配算法后,可以让你每次抢红包都是运气王哦,快来详细的了解一下吧。
其实红包的发放的随机算法,有两种做法:
1、预生产:
无外乎是在发红包的时候,随机去把金额生成到某个容器当中,然后要用的时候,一个一个的POP;
2、实时随机
用户在抢红包的时候,根据随机算法,算出这次用户要抢到多少
本文讲的是第二种。
之所以没弄第一种,是因为我们的研发同学张智哥,在以前的红包发放算法里面就是用的第二种,而我在征求他的意见看是否改成预生产的时候,他想偷个懒,不想再加表、动流程啥的。我想想也是,动流程动出问题来了,到时候还是得哥背锅。虽然作为研发一直都有丰富的背锅经验和强大的背锅内心,但是,能够少背个还是少背个。
从此,也就开始了我比较黑暗的调整算法、调整参数的过程。
红包算法关键是要简单、迅速的找出随机值,而这个坑,什么正态分布修正、什么平方后再开方取随机数优化,我都尝试过。
结果很惨淡:要么是前面的拿大头的几率很大,要么是后面的拿大头的几率很大,而前面拿大头,或者后面拿大头,是我们运营的大爷们吐槽我们的随机算法做得不如微信好的一个重要原因(尼玛谈需求的时候不讲,还弄了个随机数范围要在8%到74%之间做限制,觉得不爽就让研发背锅)。
废话完了,说下我的算法:
其实很简单,两个随机数,一个随机0到2;一个随机-1到1;两个随机数之和乘以均值,就是这次跑出来的随机数。然后再做下上下限的保护就行了。
我的代码里面偷了个懒,只做了下限,没做上限的保护。因为毕竟是研究算法,不是实际生产环境代码。
现在抢红包已经是我们每年过年的一项“全家总动员”游戏了。很多的人都表示自己每次都抢的最少,其实是你不了解其中的算法规则而已哦。最后请大家多多的关注我们的开淘网。
推荐阅读: