北京摇号中签率规则(我给北京机动车摇号找规律)(1)

四问北京摇号

笔者采集了从2011年到2016年51期每期的摇号池列表和随机种子,同时还分析了摇号程序。在本期文章里,笔者将重点讨论以下四个问题:

13位用户编码真的是随机的吗?

摇号结果可否被预测?

当参与摇号的ID确定后,摇号池也是唯一确定的。

随机数产生的方法,在上一篇文章中已经解释过了。大概如下图:

北京摇号中签率规则(我给北京机动车摇号找规律)(2)

不过,这个产生随机数种子的【随机数算法】,并没有公开。我们无法验证其到底是随机产生的,还是事先定义好的。

那么如何根据随机种子摇号呢?

计算机生成的随机数,就是一连串看似随机生成,但背后有规律的数字序列。但是,生成随机数需要“种子”(一个数字),如果不特别指定,种子是当前的操作系统时间,所以每次程序运行结果都不一样。但当指定了确认的种子号码,生成的序列就是确定的。

北京摇号中签率规则(我给北京机动车摇号找规律)(3)

公证人员从12个球中无放回地抽取6个球,每个球表示一个市民代表。每个市民在电脑上点击确定,电脑随机生成0-9的数字,最后总共6位随机号码。

之后,我们就能根据生成的序列从摇号池里挑选幸运儿了,以上面的图为例,依次挑选第1个,第8个,第32个…已经被选中的元素会被跳过。

(在附录提供了摇号程序的伪代码)

当摇号池和6位随机种子都确定时,谁能摇中就是确定的。不过,这个产生随机数种子的【随机数算法】并没有公开。我们无法验证其到底是随机产生的,还是事先定义好的。

第七位对中签率影响最大

人为发现规律有些困难,我们先用最简单的线性模型,研究在整个数据集上,是否能发现某些号码高中签概率的特征,框图如下:

北京摇号中签率规则(我给北京机动车摇号找规律)(4)

十进制数可以被打散,比如7,可以打散为0,0,0,0,0,0,0,1,0,0,第七个数为1,其他为0。这样,用户的13位注册ID可以表示为130维的布尔特征(feature),而将是否摇中,作为要预测的结果(label)。

从所有472万用户中,随机抽取20万用户作为训练集,另外20万用户作为测试集,使用logistic回归模型,最终绘出了ROC曲线【附录2】如下:

北京摇号中签率规则(我给北京机动车摇号找规律)(5)

这样的曲线,证明预测效果是相当好的!AUC值接近0.8。

也就是说,这个模型能够有很高的几率预测出一个特定号码是否中签!

我当时就惊呆了!赶紧把模型在130维特征上的权重分布绘制出来(线性模型具备很好的解释性)

下面的曲线更是让人诧异!

北京摇号中签率规则(我给北京机动车摇号找规律)(6)

从这个曲线上表明,13位数字的第七位,极大地影响了是否被抽中!

我们对全局数据集进行分析:当ID第七位为0时,你有53%的可能性抽到,抽中的概率比没抽中还高。随着第七位数字逐渐变大,中签率也越来越低,当第七位为5时,中签率接近两千分之一了!【附录3】

那是不是只要给我分配一个第七位为0的号码,就像投硬币投出正面,我就能在两到三次摇号摇中?

我曾经和现在的你一样,诧异而激动。

然而发现,这个规律对于全局数据集有效,但对某一期摇号,线性模型没有任何预测能力。 这到底是怎么回事呢?这说明,ID编码并非随机,否则不会产生如此明显的偏差。

ID编码猜想

ID可能与用户的生日,身份证,性别或某些特定属性有关系。

我们把13位编码,每一位都做了分析,下面的图是笔者部分推理:

北京摇号中签率规则(我给北京机动车摇号找规律)(7)

前四位看样子确实随机。基本能根据7,8位的数值推断出号码注册的期号。

后来经过反复分析,第7位到第13位,总共7位,是数据库的自增主键!即:每个新用户注册,这个7位的数字就会加1,这七位,代表你是系统中的第几位用户!

所以到2016年第3期为止,系统注册的人数高达572万,但总共参与摇号的仅有467万,有105万人虽注册,却没有参与,可能原因是没有通过审核。(记不记得前面提到的那些苛刻条件?)

思维实验室:如何让特定的号码中签

了解了上面的原理,我们如何让特定的号码摇中?(提前声明,仅为思想实验,没有任何真实性和指代性。)

北京摇号中签率规则(我给北京机动车摇号找规律)(8)

方法1,假设想让第8个和第40个中签,我们就可以搜索出某个特定种子,让它生成的序列正好覆盖8和40。如果需要中签的号码特别多,则不一定能覆盖所有目标号码,于是就有方法2和方法3。

方法2参考图中示例,假设原先E中签,现在为了C中签,在C之前插入C0和C1(这都是两个无效号码,不代表任何人),即可将C挤到原来E的位置,从而C中签。

方法3和2类似,但是是清除了一些号码。空号码是否参与此次摇号,肯定无人关心,而一般人也难以验证自己是否参与了本次摇号。

摇号池中的规律:210万用户曾经中断了摇号

假设能通过用户ID能知道其注册顺序和大概的注册时间,我们在摇号池数据中发现了一些有趣的模式:

模式1

用户ID按照注册时间依次递增,但ID并不连续,可能因为未通过审核,但有的不连续区间高达20以上,也就是连续20个用户注册了,而他们一个都没有通过审核!这样的情况还非常多。

北京摇号中签率规则(我给北京机动车摇号找规律)(9)

模式2

每年都有几千个老号码首次参与摇号,即使到了2016年,也会有上千个本应该在2011年就首次参与摇号的号码。也许是这些人交够了五年社保,通过了资格审查吧。

北京摇号中签率规则(我给北京机动车摇号找规律)(10)

模式3

有210万用户曾经中断了摇号中断时间有长有短,有的中断了1期,有的只摇了第一期。这个比例竟接近总人数一半。

笔者之前忘了重新登记,导致曾有接近一年时间没有参与摇号,悲剧的是每个月百度都会给我发送未中签的短信。我一直以为自己参与了摇号呢。(DT君:看来像沙漠君一样懵逼的童鞋大有人在)

为什么这家神秘的公司,不能稍微提醒一下那些忘了重新登记的用户呢?要知道大家基本都是通过手机号来注册登陆的呀。

回到前面的问题【能否让特定号码中签】,记不记得每个用户前面的1-4位的四位随机数?因为摇号池是按照总体13位数字来排序的,因此只要控制1-4位随机数,就能控制一个新产生的号码,插入到任何想插入的位置。

如果一个用户没有参与某一期的摇号,他自己都是非常难以发现的。

嗯…

同一个摇号系统,不同的信息公开

下面我们对比不同城市摇号系统的区别,看看是否有其他规律.

北京,杭州,天津,深圳和广州都是需要摇号的。只有上海和杭州拍牌。所有城市的摇号系统,都是同一家公司开发的,用户编码都是13位数字,都符合上述规律。网站和设计都非常相似,只是换了配色。

北京不少自住房摇号系统,也是这家神秘公司开发的。不得不对这家地处北四环西路的神秘公司产生浓浓的敬佩之情。

我们对比了不同城市的信息公开程度,整理表格如下:

北京摇号中签率规则(我给北京机动车摇号找规律)(11)

所有城市都不会同时提供以上五种信息。2013年以前,北京是提供中签者姓名的,可是因为一些姓名(如【刘雪梅】)重复中签太多,导致舆论风波,后来就取消掉了。即使如此,北京依然是信息最为公开的。

再如广州,只提供了中签者,其他人是否参与抽签和随机数种子都不知道,摇号视频也不公开。怪不得不少网民反响强烈呢,贵司要不考虑一下?

结论:信息理应更公开透明

这套摇号系统工作了接近6年,但却并非无懈可击。但我爱北京,我相信北京的摇号系统一定是公正而公平的。

我们要感谢北京的摇号系统,在几个城市中的公开程度是最高的。但是,如果下面的内容能公开,那真是一大幸事:

• 六位随机数种子的【随机数生成算法】

• 摇号池用户的姓名和摇中用户的姓名

也许有人会提到信息隐私的问题,难道摇中和没摇中用户的隐私不一样么,要知道现在很多城市依然在公开摇中用户的姓名呢。搜索引擎依然能找到早些年的中签用户名单。

其实限牌看似合理,却彻底杜绝了资源的按需流动:早期不限购时期的车友,拥有好几辆车;而2011年以后的市民,不论多么着急用车,都难以指望摇号,只能通过一些地下手段,来支付高昂的租车牌费用。二手房都可以买卖,但为什么二手车车牌不行呢?

也许是因为,一旦车牌能交易,摇号便失去了其所谓的【纯洁性】,想想摇中了就相当于中了几十万的大奖,这一点也许是管理部门更不愿意看到的。而封死现在车牌的总数量也不可行,车企一定不干,河北车牌又要爆发了。

现在电动车摇号毫无压力,只要申请就能中,笔者也查了很多电动车的信息,很不幸,满足“质量还可以,基本能开”标准的电动车几乎没有,即使来自纳税人的高昂的补贴也不能改变这一局面。至于电动车,以后有时间我们可以单独撰文讨论一下。

当然有人说了,没有车可以打车啊,现在滴滴和租车软件多么方便,还比买车省钱,不用考虑停车啊。

我们先不论经济账,也不论成为有车一族的【自由】,想想某一天下大雨,老婆很晚才到家,回来第一句话就是,【打不到车,我老板开车把我送回来的】,这个时候你看着窗外远去的车影,依稀还能看到那男人的嘴脸,一切吐槽都变得苍白,心里只剩下三个字:【要有车】

附录

1. 摇号程序的伪代码(Python,仅作为演示,可能有纰漏)

北京摇号中签率规则(我给北京机动车摇号找规律)(12)

2. ROC曲线

ROC全称为受试者工作特征曲线 (receiver operating characteristic curve), 以假阳性概率(False positive rate)为横轴,击中概率为纵轴所组成的坐标图,绘制特定刺激条件下由于采用不同的判断标准得出的不同结果画出的曲线。

ROC曲线围成的面积,就是AUC值。如果模型具备超强性能,那么曲线会尽可能靠近左上角,AUC值接近1; 若模型不具备任何预测能力,则ROC退化为一条对角线,AUC为1/2,和瞎猜没什么区别。ROC相比于精确度和召回率,更能描述一个模型的整体特征。对任意一次特定摇号的数据绘制ROC,得到的就是对角线。

3. 神秘的第七位

北京摇号中签率规则(我给北京机动车摇号找规律)(13)

计算机从0开始,第六位也就是我们所说的第7位,横轴二元组的(4,1)代表第七位值为4且摇中,(4,0)代表为4且未摇中。

估计有人又会因此传谣了,【通过你的编码预测吉凶和是否能够摇中】然后刷爆朋友圈,这规律全局来看,确实是对的。但仅仅是越小的号码越早注册,摇号的次数越多,摇中的概率就会越大,仅此而已,哎。

4. 其实研究并不深入

我也曾尝试做比如【第三位和第五位加起来是个质数】这样丧心病狂的特征工程,还计划用其他的非线性模型,但效果并不一定比线性模型好,这似乎难说是个机器学习问题。四位随机数的模式也没有继续深究,如果你有兴趣继续研究,欢迎联系我。

(注:本文仅代表作者观点)

数据侠门派

本文作者:数据侠赵一鸣,“沙漠之鹰”公众号创始人,蚂蚁金服人工智能团队成员

关注微信公众号【沙漠之鹰】,在后台回复13位用户编码, 即可查询当前用户的中签概率,中断的期号和不幸度排名。

如何加入数据侠

“数据侠”栏目网罗全球最IN的大数据侠客,利用人工智能、机器学习以及各种前瞻算法,打造理性而酷炫的数据可视化盛宴。过去,我们用文字,视频,图片传达信息。现在,我们用大数据阐述事实及其背后逻辑趋势。

DT时代超级英雄正在组队!你也想要成为成为数据侠吗?请将你脑洞大开的数据作品,发到数据侠联盟萌主沈念祖的邮箱:shennianzu@dtcj.com(了解更多有趣又有料的商业数据分析,欢迎关注DT财经微信公众号“DTcaijing”,下载“DT·一财”APP)

,