小米手机抢购经验之排队算法深度探析

发布时间:2018-07-01 15:31:24   来源:文档文库   
字号:

《小米手机抢购经验之排队算法深度探析》

小米手机凭着傲人的性价比,供不应求。每一次开放购买,都引得百万人抢购。粥少僧多,大部分米粉都抱着希望而来,失望懊恼而去。由于小米公司并没有公布过实际的抢购规则,采取这种黑盒方式,筷子哥只能就多次的抢购经历,结合相关数据,凭着多年的网络编程的经验来分析一下小米手机抢购的算法。

一、 抢购方式

通常的抢购方式有秒杀、抢楼、抽奖等方式。

很显然,小米并没有采取抢楼的方式(小米论坛中倒经常采取抢楼的方式发放F码)。也不是秒杀方式(秒杀会在活动起几秒钟内结束所有抢购,大家抢过天猫的都知道),那么,小米的抢购方式是不是抽奖呢?我们先摆出下列基于经验的事实来慢慢分析。

1、 小米的抢购并不决定于点击 抢购手机的时间。小米3的第二次抢购中,有一个朋友在12:26抢到了米3。似乎他“注定”要得到这部米3。相信大家不会认为这26分钟内没人比他早点击进入抢购吧。

2、 小米的3点剩余专场,并不是所有人都可以进入抢购。而是有一部分没抢到手机的预约号会收到一个手机短信,没收到短信的人根本看不到抢购页面。

3、 开始抢购后,有些人几秒钟能看到选择机型 有些人需要数分钟甚至更长时间。而有些人根本从头到尾就在排队,点击着进入活动(19号开始不需要点击进入活动)。

4、 每个入场的URL都是一致的(每次活动不同)。红米的第二次抢购,这个URL甚至可以直接请求入场(选择机型),但之后就再也不行了,这个改动直接导致一大批基于post的抢米软件失效。

5、 有过传闻一个神秘的URL可以看到你的小米账号是否已经内定了抢购成功的权限。具体地址我就不说了。但根据我的实际测试,这个url的记录显然是已结束的一季抢购的数据。但下季这个url获得的值会不会早于抢购开始的时间开始刷新,目前不得而知。即使真的稍早一点出现,由于时间过于紧迫,来不及做账号的筛选操作,实际意义也不是很大。但这个信息对于我们的分析有很大帮助。

6、 小米论坛的VIP验证中有关于 VIP账户优先抢购的信息说明。但实际抢购中常常有非VIP用户抢到手机,VIP账户空手而归的经验。

7、 同样的,被官方吹捧为“传说中的抢机神器”(软件封面)的小米商城APP,虽然大部分人都认同更容易抢到,但也同样并不是一抢一个准。

根据上面的资料,我们提出如下猜想:

1、 每个账户能不能抢到手机的确事先已经确定了的。就是所谓的入场权限事先确定。

2、 入场权限分配的数目大于手机总台数,但远远小于预约数。所以大部分人是从头到尾看着排队结束的。

3、 服务端已经做了识别和限制,直接post数据是无法改变你的入场权限的,确定了你不能进选择机型的页面,你复制了链接递交也没用。用这个原理的抢机软件全部歇菜,不要想了。除了小米公司内部流出的软件单(内部员工留的后门),其他的宣称利用http协议刷单的软件都是假的。

4、 VIP认证和小米商城APP对提高入场几率有帮助,但并不是百分百一定抢到。

5、 有了入场资格并不一定就一定看到机型选择,看到机型选择未必一定抢购,但没有入场资格一定看不到机型选择,更别谈抢到手机了。

6、 拥有入场资格后,什么时候显示选择机型给你,是一个随机值,此值可能和账号与访问客户端的信息有关系。

举个例子帮大家加深理解:

假设一共有10台手机发放购买,1000人预约。

事实上从抢购开始(12:00)前,小米服务器内部已经分配好了50个入场权限。也就是说 剩下的 1000-50=950 都只是陪练。他们根本不可能进入选择机型输入验证码的页面。接受这个事实吧,小米公司就是这么干的。

也就是说,无论如何,能抢到这10台小米的只会在这50个小米账号中产生。换句话来说此50人拥有“入场资格”。

到了抢购时间,这50人会陆续入场,选择机型、填写验证码。早看到的早输入,就更容易抢到。前10个输入正确验证码的抢到手机。

如何从1000个帐号中挑选50个赋予其“入场资格”呢,仍然以例子为假设:

首先是服务器算法从小米账户方面产生一个参数,比如普通账户(未验证VIP)随机从150中随机取值。Vip0账户随机从10~60中随机取数。Vip1账户随机从2070中随机取数…以此类推。赋值给参数A

然后从抢购前最后的登录时用的客户端方面产生一个参数,比如普通浏览器从160中随机取数,小米商城app40100中取数。赋值给参数B

然后让AB两个值相加或经过某个公式计算得出结果C

然后按C值的大小排序,前50个账号获得入场资格。

获得入场资格的50个账号,在通过AB两值(可能还有其他未知的值参与)运算得出结果D。这个D就是从开始抢购到你入场的延时值。

就这么简单。

有些朋友要问了,那为什么我们经常遇到普通账户获得了入场资格,而VIP却没有,用电脑浏览器获得了入场资格,而手机APP却没有呢?

答案也很简单,因为运气。

虽然是普通帐号,从1-50中随机取值,也可能抽到394248这样的相对大数值。

而即使是VIP0账号,从10-60中取值,也可能抽到的是121823 这样的相对小值。

自然就会出现上述的结果。

但是,千万不要搞错了,从10-60中永远取不到60-100的大数。而40-100中永远也不会出现1-39这样的小数。

稍微懂点概率学的人都明白这一点。

了解了这些信息,我们怎样才能最大化自己的入场资格几率呢?

三个方面下手!

1、 提升账号加权。能验证VIP的抓紧验证VIPVIP1难升,VIP0只要有手机串号就能升。不升白不升!

2、 用多帐号抢购,分担人品,普遍撒网。记住,加权不等于一定抢到,但根据概率论,数据越大,结果越精确。有了加权,账号越多,才越能体现出加权的优势。

3、 用小米手机的小米商城APP抢购手机,这个加权也别放过!正如百度文库电脑下载文章要花钱,APP就免费;支付宝电脑版超过流量要手续费,APP就免手续费;小米公司要把握网络流量入口推自己的APP,就不会封杀对APP的优先加权!!!

那手机商城一个手机只能开一个,你又说多帐号抢购,我没有那么多的手机怎么办?这个问题,筷子哥就不直接回答了。我不会告诉你我QQ好是1735085014的。

本文来源:https://www.2haoxitong.net/k/doc/6e4016db998fcc22bcd10d96.html

《小米手机抢购经验之排队算法深度探析.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式