2011 - 2016年数据分析:
2017年01月:
普通小客车摇号总数:10961022,配置指标个数:13905
中签概率:13905/10961022 = 0.0012685
对于这样低的概率,很多人一摇就中,真是运气太好了!但不是每个人运气都这么好,毕竟概率真的很低很低!对于有些人一摇就中,有些人怎么摇都不中这个问题,为了防止说摇号有猫腻,官网还特地公开了每一期的摇号数据,以示清白。
今天,从技术角度分析分析如何能够快速摇到号。
如何让程序做到公平随机的挑选一组数据?
首先我们先普及一个知识——【随机种子】
其实计算机并不能产生真正的随机数,一般产生随机数会使用计算机系统时钟来作为种子,因为时钟一直在变,所以得到的数也就一直在变。有时候我们为了科研需要,需要事先设置固定的种子数,这样每次产生的随机数都是一样的,便于重现你的研究,也便于其他人检验你的分析结果。
那么摇号时的随机种子是怎么产生的呢?
截至目前,我只知道,是官方生成!
再来看看官方提供的演示程序,如图所示:
Step1、导入下载的数据;
Step2、输入提供的6位随机种子数,计算可以得到当期的摇号全部结果;
Step3、再输入我的申请编码,查询是否中签。
这样可以重现摇号,供大众验证摇号结果真伪了。
但是,我还是想知道:
如果给定部分用户的申请编码,能否用一个随机种子让这些申请编码都命中?(提供一下你们的申请编码,帮你们算下随机种子,保证你们都中签)
思路一下,首先得计算出能够保证摇出指定申请编码的所有6位随机种子,如果有多个指定的申请编码,只需要挑一个共同的随机种子就行。
比如我的编号是abcdef,能够摇中我这个编号的种子是123,125;你的编号是fedfad,能够摇出你的编号的种子数是111,125,这样使用125来做摇号种子,我们两个都可以中签了。
那么,怎么才能计算出确保我一定能摇中的所有随机种子呢?
官方提供的程序只能验证,不能计算,于是,分析了一下摇号程序,改写生成了一个新版本。(至于怎么分析的,这里不做赘述了)
可以看到,改版程序添加了高级计算的功能。高级计算,是通过遍历一个种子范围,判断哪些种子可行的计算方式。如果可行,则保留。
如在上述测试中,使用得到随机种子100548, 100656, 100681, 100712,“我的申请编码”都可以中签,可以一直运行该程序,得到保证“我的申请”中签的全部随机种子。
最后,如何让北京小车摇号中签更容易呢?
首先你得拿到摇号池数据【官网有提供】;
其次你得花时间计算出能够摇中的随机种子数【摇号人多,数据量大,要计算出符合标准的全部6位随机数,需要些时间】;
最后,也是最关键的一步,想办法让正式摇号时使用你提供的其中之一的随机种子。【有人问,这样能做到么?人生入戏,全靠演技。】
最后附上随机种子计算程序下载地址:
http://download.csdn.net/detail/longteng1116/9807023
后续通过公众号long_lab ,分享源代码。