- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
小米手机抢购经验之排队算法深度探析
《小米手机抢购经验之排队算法深度探析》
小米手机凭着傲人的性价比,供不应求。每一次开放购买,都引得百万人抢购。粥少僧多,大部分米粉都抱着希望而来,失望懊恼而去。由于小米公司并没有公布过实际的抢购规则,采取这种黑盒方式,筷子哥只能就多次的抢购经历,结合相关数据,凭着多年的网络编程的经验来分析一下小米手机抢购的算法。
抢购方式
通常的抢购方式有秒杀、抢楼、抽奖等方式。
很显然,小米并没有采取抢楼的方式(小米论坛中倒经常采取抢楼的方式发放F码)。也不是秒杀方式(秒杀会在活动起几秒钟内结束所有抢购,大家抢过天猫的都知道),那么,小米的抢购方式是不是抽奖呢?我们先摆出下列基于经验的事实来慢慢分析。
小米的抢购并不决定于点击 抢购手机的时间。小米3的第二次抢购中,有一个朋友在12:26抢到了米3。似乎他“注定”要得到这部米3。相信大家不会认为这26分钟内没人比他早点击进入抢购吧。
小米的3点剩余专场,并不是所有人都可以进入抢购。而是有一部分没抢到手机的预约号会收到一个手机短信,没收到短信的人根本看不到抢购页面。
开始抢购后,有些人几秒钟能看到选择机型 有些人需要数分钟甚至更长时间。而有些人根本从头到尾就在排队,点击着进入活动(19号开始不需要点击进入活动)。
每个入场的URL都是一致的(每次活动不同)。红米的第二次抢购,这个URL甚至可以直接请求入场(选择机型),但之后就再也不行了,这个改动直接导致一大批基于post的抢米软件失效。
有过传闻一个神秘的URL可以看到你的小米账号是否已经内定了抢购成功的权限。具体地址我就不说了。但根据我的实际测试,这个url的记录显然是已结束的一季抢购的数据。但下季这个url获得的值会不会早于抢购开始的时间开始刷新,目前不得而知。即使真的稍早一点出现,由于时间过于紧迫,来不及做账号的筛选操作,实际意义也不是很大。但这个信息对于我们的分析有很大帮助。
小米论坛的VIP验证中有关于 VIP账户优先抢购的信息说明。但实际抢购中常常有非VIP用户抢到手机,VIP账户空手而归的经验。
同样的,被官方吹捧为“传说中的抢机神器”(软件封面)的小米商城APP,虽然大部分人都认同更容易抢到,但也同样并不是一抢一个准。
根据上面的资料,我们提出如下猜想:
每个账户能不能抢到手机的确事先已经确定了的。就是所谓的入场权限事先确定。
入场权限分配的数目大于手机总台数,但远远小于预约数。所以大部分人是从头到尾看着排队结束的。
服务端已经做了识别和限制,直接post数据是无法改变你的入场权限的,确定了你不能进选择机型的页面,你复制了链接递交也没用。用这个原理的抢机软件全部歇菜,不要想了。除了小米公司内部流出的软件单(内部员工留的后门),其他的宣称利用http协议刷单的软件都是假的。
VIP认证和小米商城APP对提高入场几率有帮助,但并不是百分百一定抢到。
有了入场资格并不一定就一定看到机型选择,看到机型选择未必一定抢购,但没有入场资格一定看不到机型选择,更别谈抢到手机了。
拥有入场资格后,什么时候显示选择机型给你,是一个随机值,此值可能和账号与访问客户端的信息有关系。
举个例子帮大家加深理解:
假设一共有10台手机发放购买,1000人预约。
事实上从抢购开始(12:00)前,小米服务器内部已经分配好了50个入场权限。也就是说 剩下的 1000-50=950人 都只是陪练。他们根本不可能进入选择机型输入验证码的页面。接受这个事实吧,小米公司就是这么干的。
也就是说,无论如何,能抢到这10台小米的只会在这50个小米账号中产生。换句话来说此50人拥有“入场资格”。
到了抢购时间,这50人会陆续入场,选择机型、填写验证码。早看到的早输入,就更容易抢到。前10个输入正确验证码的抢到手机。
如何从1000个帐号中挑选50个赋予其“入场资格”呢,仍然以例子为假设:
首先是服务器算法从小米账户方面产生一个参数,比如普通账户(未验证VIP)随机从1~50中随机取值。Vip0账户随机从10~60中随机取数。Vip1账户随机从20~70中随机取数…以此类推。赋值给参数A。
然后从抢购前最后的登录时用的客户端方面产生一个参数,比如普通浏览器从1~60中随机取数,小米商城app从40~100中取数。赋值给参数B。
然后让A,B两个值相加或经过某个公式计算得出结果C。
然后按C值的大小排序,前50个账号获得入场资格。
获得入场资格的50个账号,在通过A、B两值(可能还有其他未知的值参与)运算得出结果D。这个D就是从开始抢购到你入场的延时值。
就这么简单。
有些朋友要问了,那为什么我们经常遇到普通账户获得了入场资格,而VIP却没有,用电脑浏览器获得了入场资格,而手机APP却没有呢?
答案也很简单,因为运气。
虽然是普通帐号,从1-50中随机取值,也可能抽到39、42
您可能关注的文档
最近下载
- 论 自由 精品读本.pdf
- 医疗器械质量管理体系文件.pptx
- 金融中心施工总承包工程项目特色与观摩亮点介绍.pptx
- 小学数学六年级上册期中易错题重难点试卷含详细答案解析1524.docx
- 做自己的心理医生【26页】.pptx
- Module 4 单元整体教学设计 外研版(三起)六年级上册英语.docx
- 环球金融中心项目专项测量放线施工方案.docx
- 环球金融中心项目施工总承包工程质量创优策划.ppt
- 鼎信JB-QT-TS3200火灾报警控制器(联动型)安装使用说明书 XF2.900.029AS Ver.pdf VIP
- 中华护理学会团体标准TCNAS 21─2021解读:胰岛素皮下注射(1).pptx
文档评论(0)