技术宅男揭秘:北京机动车摇号真的公平?

46
0
15
  1. 云栖社区>
  2. 博客>
  3. 正文

技术宅男揭秘:北京机动车摇号真的公平?

云栖徒骇 2016-09-13 18:04:31 浏览18106
展开阅读全文

【编者按】本文作者为蚂蚁金服人工智能部高级算法工程师墨眀(网名:沙漠之鹰),曾就职于三星研究院从事语音合成工作,擅长自然语言处理、网页爬虫和数据分析。本文为作者在加入蚂蚁金服之前的个人业余兴趣项目。本篇分析最先发表在其个人公众号“沙漠之鹰”上,网络转载阅读超过200万,分享话题主要是通过抓取公开资料围绕当前北京机动车摇号这一社会热点展开。下面一起来看下,他是如何借助数据的力量去验证自己种种的假设和猜测的。


偶数月的26号中午11点到下午1点,沙漠君的手机上就会收到一条短信,不是中介和广告,但内容肯定是一样的:“很遗憾,该编码本次摇号未中签或摇号资格已过期”。二姨妈真是比大姨妈都准时!


几年过去了,在帝都辛苦挤地铁的你,是否和沙漠君有同样的疑问:

  •  现在摇号到底有多难?
  •  哪些人摇到了号?平均摇了几回?
  •  有没有提升摇号概率的方法?
  •  摇号算法是什么?是绝对公平的吗?

沙漠君用真实的数据,告诉你答案。  

摇到号的概率是多少?

2016到2017年,北京每年各有15万个小汽车指标。新能源比例达到40%,普通号只剩9万个,一年6次,每次15000个。

但是!2016年第3次摇号,摇号池总数量是9917981!总摇号人数270.7万!如果你摇号次数在24次之内,那么本次摇到的概率为千分之一!   花166年摇一千次都不中的概率是37%!

每摇12次没中签,真的会像官方的说法,可能性增加一倍么?太天真!因为你增加,别人的也在增加。除非你是第一批参加摇号的人,否则会有更多的人比你增加更高的概率。因此,号是越来越难摇的。

五年间,摇到号的人数总共94万人。2011年时,每隔10个人就会有一个幸运儿,几年前买车确实比现在买车容易太多。看看这张图:


e63cfefdbf01eec5b38b7568ac08fc62a549b57d


2012年和2014年算是摇号黄金期,每期都有接近两万人摇到号,可是到了2016年,这个数字降为1.3万。然而,下面这张图绝对让你哭晕!

8b7572ce482c576f76b510437a68420b670d6283


当然,每年增加的摇号人数基本是线性的:


00c27fc9e08bdcf65fa8a2d073c984c215edd134


从第一期的18万,到2016年6月份的270万,每年增加五十万人。我们难以确定新增加的是哪些人数,按照政策,学生可能占了相当大的比重。


那么,那些摇到号的人,总共摇了多少次呢?下面这张图回答你:

9a04ff70238bbc136e8003d1d0b7a80b612836b6

有接近九万人第一次就摇到号了,还有190人摇了整整51次才拿到号,这个曲线非常地光滑,几个凸起点正好是调整中签率的门限,非常符合数学的美感。


有14201人,51次摇号没有一次成功。真正的幸运儿是这些人:在最近的这一期,以1/1000的概率第一次抽签就拿到了号,一共90人。

d0840cb0b645dda51a965850e9bff72fbf243139

摇号程序是否公平?

作为程序员的沙漠君,被激发了昂扬的斗志,我们来验证一下摇号程序是否公平。

通过使用沙漠君自己开发的Hawk爬虫程序,采集了从2011年到2016年51期每期的摇号池列表和随机种子。同时,我还下载了它的摇号程序,用于分析其摇号算法。程序使用C#编写,沙漠君破解它的源代码简直不要太容易。

为了能让不懂程序的读者也能理解,我用尽量简明的语言描述其摇号方法:假设有5人摇号,每个人都有唯一的ID,1-5,用户2,4有两倍中签率,用户3有3倍中签率,那么摇号池排列如下:

000946f4f6a53621cdff27f1101da5bcef82a268

  •  第一轮,把所有人都按编号次序排列,即序号1-5
  •  第二轮,把所有中签率大于等于2倍的按次序排列,即6-8
  •  第三轮,把大于等于三倍的按次序排列,只有9

现要求从池中随机抽取三个序号。计算机能通过一个种子,可以生成一串看似随机的伪随机序列。在一般程序中,种子通常是当前运行的时间。因每次运行时间不同,所以结果也不同。

而摇号程序有趣的地方就在这里,种子是事先提供好的一串6位数字,一旦你知道它,那么你在摇号前就能预测哪些人被抽中。每个人的中签倍率和ID都是确定的,因此分析6位的随机数种子是如何产生的,成了解决问题的关键。


6位随机种子是如何产生的?


沙漠君研究了首都之窗上用于公示随机数的2013年某期的视频。

公证人员事先从市民中选出12位代表人。主持人在鱼缸中随机抽出6个球,每个球都是一个市民代表人的号码。之后,6个代表人会依次敲击键盘,随机产生出0-9的随机数作为随机数种子。有趣的地方就在这里!!

c9bdd8bf9c43eef1f7e88a02cac0378a9c8d5c0b

主持人说,请每一位代表出号码,我一帧帧地分析了视频,从市民代表在键盘上的操作位置来猜测,点击的多半是是回车键,但代表按键盘都是背对摄影机的。你可以简单理解为,每按一次回车,电脑产生出一个新的0-9的数字,总计6个。

网站提供了随机产生摇号号码的程序,却没有提供随机产生六位种子的程序。这个随机数种子本身,会不会事先保存,一定能保证随机吗?看下面这张图(当然,300次采样数量有点少)


1bdf09521d454de5a6d64ca37daff22c0ac90850


那我们该怎么办?


一种方法是购买新能源汽车,中签率约为12分之一。开着新能源,六环可能都出不去就没电了(>_<)。


按照非官方说法,摇号政策可能在未来退出,并引入家庭单位摇号和征收拥堵费。但发出去的车牌不会回收,而一旦放开限购会导致疯狂购车,因为拥堵费太贵,大家塞满小区就是不出门:先把坑占上。这肯定也不是政府愿意看到的。至于之前传言的24次摇号没中者自动分配一个号码,我都不想告诉你24次以上没摇中的人有多少!传谣也要讲基本法啊。

通过以上分析,解决了沙漠君之前的疑惑,这套系统设计是符合规范的,抽签是随机和公平的。各位亲爱的读者,安心摇号,洗洗睡吧~/(ㄒoㄒ)以后多绿色出行,为首都交通做出贡献。

关于作者

本文作者为“沙漠之鹰”个人公众号。任何形式的转载,演绎,必须经过公众号联系原作者获得授权,保留一切权利。本文原作者“沙漠之鹰”授权云栖社区发布,如有转载,请按照原转载要求转载。

 本文数据来源bjhjyd.com,截至2016年6月摇号人数共计4394613人。但目前不确定学生是否能摇号。对北京来说600万辆是一个红线,而北京作为全国示范,更愿意用行政而非经济手段来限制机动车数量,以表现公平。我国人口已经进入负增长,50年以后人口严重老龄化,我们老了之后开车可能会容易一些。

网友评论

登录后评论
0/500
评论
云栖徒骇
+ 关注