巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

大师在抢红包,法式员在研讨红包算法

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-27 10:45:00 阅读数: 136

大年节全天微信誉户红包总发送量到达10.1亿次,摇一摇互动量到达110亿次,红包峰值发送量为8.1亿次/分钟。

抛开微信红包的市场代价不谈,红包自身的算法也激发了热议,由于官方不给出明白的说法,各家也是众说纷繁,小编上面也为大师带来几种阐发。

起首看看数据阐发帝

大大都人都做出自身的预测,这也是在不晓得外部随机算法的时辰的独一挑选,可是大大都人不给出自身亲身的查询拜访成果。这里给出一份100样本的查询拜访抽样样本数据,并提出自身的预测。

1. 钱包钱数知足截尾正态随机数散布。大抵为在截尾正态散布中取随机数,并用其乞降数除以总代价,取得批改因子,再用批改因子乘上一切的随机数,获得红包代价。

这类散布象征着:低于均匀值的红包多,可是离均匀值不远;高于均匀值的红包少,可是弘远于均匀值的红包偏多。

图1. 钱包代价与其频次散布直方图及其正态拟合

但看散布直方图并不能推出它合适正态散布,可是斟酌到法式的简练性和随机数的合感性,这是最符合道理的一种预测。越是前面的钱包,代价遍及更高

图2. 钱包序列数与其代价干系曲线

从图2中的线性拟合红线能够或许看到,钱包代价的整体变更趋向是在渐渐增大,其变更规模约莫是一个绿色虚线高低界划出的“通道”。(曲线能够或许被围在这么一个正符合惯例的“通道”中,也从正面反应了纪律1的合感性,说了然并不是均匀散布的随机数)从另外一个均匀数的图中也能够或许看出这一纪律。

图3. 均匀数随序列数的变更曲线

在样本中,1000代价的钱包被分红100份,均值为10。可是在图3中咱们能够或许看到在最初一个钱包之前,均匀数一向低于10,这就说了然一起头的钱包代价偏低,一向被后期的钱包代价拉着往上走,后期的钱包代价更高。

3. 固然均匀数的图还能够或许流露出另外一个纪律,那便是最初的那一小我常常轻易交运抽得比拟多。由于最初那一小我是钱包剩下几多就拿几多的,而之前一切人的均匀数 都低于10,以是最少保障了最初一小我会高于均匀值。在本样本中,98号钱包抽到35,而最初一份钱包抽到46。

综上,根据样本预测:

1. 抽到的钱大大都时辰跟别人一样少,但一旦一多,就轻易多良多。2. 越是抽前面的钱包,钱越轻易多。 3. 最初一小我常常轻易撞大运。

点评:这类较着很现实有差别,小编每次不论甚么时辰抢都是几毛钱。

第二位同窗写了一个简略python 代码

据察看,红包分钱知足以下几点:

1.不会有人拿不到钱

2.不会提早分完

3.钱的动摇规模很大

红包在一起头建立的时辰,分派计划就订好了。抢红包的时辰,不过是挨个pop up罢了。

是以 python 代码以下:

def weixin_divide_hongbao(money, n): divide_table = [random.randint(1, 10000)for x in xrange(0, n)] sum_ = sum(divide_table) return [x*money/sum_ for x in divide_table] 

不过上述算法另有两个小题目:

1.浮点数精度题目

2.边境值的处置

第三位同窗根据网下流传的python写了一个java的版本

int j=1; while(j<1000) { int number=10; float total=100; float money; double min=0.01; double max; int i=1;  List math=new ArrayList(); while(i<number) {  max = total- min*(number- i); int k = (int)((number-i)/2); if (number -i <= 2) {k = number -i;} max = max/k; money=(int)(min*100+Math.random()*(max*100-min*100+1)); money=(float)money/100; total=total-money; math.add(money); System.out.println("第"+i+"小我拿到"+money+"剩下"+total); i++; if(i==number) { math.add(total); System.out.println("第"+i+"小我拿到"+total+"剩下0"); } }  System.out.println("本轮发红包中第"+(math.indexOf(Collections.max(math))+1)+"小我手气最好"); j++; }

第四位同窗的这类算法看起来很是迷信。

他以为:

1、每小我都要能够或许付出到红包;

2、每小我付出到的红包金额总和=总金额;

3、每小我付出到的红包金额不等,但也不能差的太离谱,不然就没兴趣;

4、算法必然要简略,不然对不起腾讯这个招牌;

正式编码之前,先搭建一个递进的模子来阐发纪律

设定总金额为10元,有N小我随机付出:

N=1

则红包金额=X元;

N=2

为保障第二个红包能够或许一般收回,第一个红包金额=0.01至9.99之间的某个随机数

第二个红包=10-第一个红包金额;

N=3

红包1=0.01至0.98之间的某个随机数

红包2=0.01至(10-红包1-0.01)的某个随机数

红包3=10-红包1-红包2

……

int j=1; while(j<1000) { int number=10; float total=100; float money; double min=0.01; double max; int i=1;  List math=new ArrayList(); while(i<number) {  max = total- min*(number- i); int k = (int)((number-i)/2); if (number -i <= 2) {k = number -i;} max = max/k; money=(int)(min*100+Math.random()*(max*100-min*100+1)); money=(float)money/100; total=total-money; math.add(money); System.out.println("第"+i+"小我拿到"+money+"剩下"+total); i++; if(i==number) { math.add(total); System.out.println("第"+i+"小我拿到"+total+"剩下0"); } }  System.out.println("本轮发红包中第"+(math.indexOf(Collections.max(math))+1)+"小我手气最好"); j++; } 

输入一看,动摇太大,这数据太无趣了!

第1个红包:7.48 元,余额:2.52 元

第2个红包:1.9 元,余额:0.62 元

第3个红包:0.49 元,余额:0.13 元

第4个红包:0.04 元,余额:0.09 元

第5个红包:0.03 元,余额:0.06 元

第6个红包:0.03 元,余额:0.03 元

第7个红包:0.01 元,余额:0.02 元

第8个红包:0.02 元,余额:0 元

改进一下,将均匀值作为随机宁静下限来节制动摇差

int j=1; while(j<1000) { int number=10; float total=100; float money; double min=0.01; double max; int i=1;  List math=new ArrayList(); while(i<number) {  max = total- min*(number- i); int k = (int)((number-i)/2); if (number -i <= 2) {k = number -i;} max = max/k; money=(int)(min*100+Math.random()*(max*100-min*100+1)); money=(float)money/100; total=total-money; math.add(money); System.out.println("第"+i+"小我拿到"+money+"剩下"+total); i++; if(i==number) { math.add(total); System.out.println("第"+i+"小我拿到"+total+"剩下0"); } }  System.out.println("本轮发红包中第"+(math.indexOf(Collections.max(math))+1)+"小我手气最好"); j++; }

输入成果见下图

第1个红包:0.06 元,余额:9.94 元

第2个红包:1.55 元,余额:8.39 元

第3个红包:0.25 元,余额:8.14 元

第4个红包:0.98 元,余额:7.16 元

第5个红包:1.88 元,余额:5.28 元

第6个红包:1.92 元,余额:3.36 元

第7个红包:2.98 元,余额:0.38 元

第8个红包:0.38 元,余额:0 元

小结:

小编感觉这完整能够或许懂得成一个红包激发的血案,小编仅仅罗列了几个,另有一些工程学的同窗间接抛出了数学模子、团圆函数等等,可是不管算法是简略仍是庞杂,玩的高兴就够了。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。比来几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干消息more

15
05月
【网站SEO规划】网站扶植之初SEO规划要注

【网站SEO规划】网站扶植之初SEO规划要注重哪些方面 比来一些刚起头处置SEO职业的伴侣问我,做一个新网站后期在SEO规划上... >>概况

06
08月
全新假造主机+域名+建站宝盒体系套餐上线了,

继建站宝盒V8进级,我司整合产物特征,全新假造主机+域名+自助建站体系套餐上线了,知足您差别的建站须要!最大限制进步用户利用休会对劲度。 1... >>概况

28
03月
龙奔-抓钱舞 2019抖音快手最火歌曲

简介:龙奔继《猪年大吉》后,来一波新年舞曲《抓钱舞》,抓钱舞是当下最为风行的肢体跳舞之一,成为办公跳舞的代表作,并慢慢在办公场合,在白领群体... >>概况

29
04月
php 利用GD库为页面增添水印示例代码

复制代码 代码以下: <?php header ("Content-type: image/png"); $conn = MYSQL_... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站