数据分析 - 残酷的世界

数据分析 - 残酷的世界

可视化做品连接地址:http://reinhardhsu.com/game.htmljavascript

概要

最近读了比尔盖茨的夏日书单中的荐书《乡下人的悲歌》
html

书中描述了贫穷、毒品和一系列陋习,像遗传病同样,困扰着一代又一代的美国底层人民,使得他们生活艰辛,充满了各类不幸,而且很难向更高的阶层游动。前端

另外一个是听到网易蜗牛读书的有声读物《若是不能改变阶层,咱们努力是为了什么?》中,北京高考状元对于阶层固化的言论。java

这些都让我产生了深深的焦虑,碰巧这时在知乎看到一个热议的游戏,《房间内 100 我的,每人有 100 块,每分钟随机给另外一我的 1 块,最后这个房间内的财富分布是怎样的?》,来模拟社会财富分配。我以为颇有意思,不妨就来玩一下。算法

我初始了100个游戏玩家。从18岁开始,这100我的带着本身的财富,开始各自的人生旅程。每一个人天天要随机地找到另外一我的,给他一笔钱。到65岁退休时,看看你们的资产状况。dom

为了增长游戏的可玩性,让每一个观众都能在其中找到本身的位置,我设计了四种角色:ide

  • 普通人
  • 富二代
  • 努力的人
  • 有钱又努力的人

观众还本身能够调整一些参数,以模拟他所认为的这个世界。这些参数包括:性能

  • 各角色所占的比例
  • 各角色的初始财富
  • 各角色每轮游戏相对普通人的收支系数
  • 每轮游戏要给别人的钱数
  • 是否容许负资产

设计

主要的变量及其类型:

  1. 玩家年龄,时间维度
  2. 玩家的财富值,定量变量
  3. 玩家财富的标准差,定量变量

由于这个游戏的结果最终是要经过对比的形式进行解读,好比不一样角色的玩家的财富值对比,某一特定角色的玩家在不一样特定阶层的占比多少等等。而对人的视觉处理系统而言,更善于量化刻度上的位置差别,因此我选择在坐标轴上进行可视化。动画

主要变量的可视化形式

其中,玩家的年龄是时间维度,我用动画的形式逐年递增,来看另外两个变量如何随着年龄的增加而变化。设计

这里有100个玩家,咱们要看每年不一样玩家间财富的对比,因此我用条形图来展现玩家的财富值。X轴是玩家的索引,Y轴是玩家的的财富值。

由于每一年都会计算出一个标准差,因此它是一个时序数据,我用折线图,来查看它的走势。X轴是时间,Y轴是玩家财富的标准差。

可视化要传达的主要观点

经过这个可视化,咱们简单地模拟了在一个封闭环境中,人群的财富分配。

这个封闭环境中有100个游戏玩家,从18岁开始,每人带着100块钱,开始各自的人生旅程。每一个人天天要随机地找到另外一我的,给他1块钱,能够理解为天天的生活成本。

若是不容许负债,那么玩家资产变为0时,就不用给钱,可是能够收钱,能够理解为社会基本保障吧。

到65岁退休时,看看你们的资产状况。

Round One:100个普通人,不容许负债

游戏一开始,我放了100个普通人。

咱们能够看到,30岁以前,人与人之间的差距已经彻底拉开了。到65岁退休时,有一半的人资产缩水到100如下,有6我的的资产已经翻倍。最富有的人的资产接近初始值的4倍。

Round Two:100个普通人,容许负债

若是容许负债,会不会让状况变得更好呢?

咱们能够看到,借债虽然能让咱们在走投无路时多一些周转余地,但最终会让穷人变得更穷。

Round Three:10个富二代,90个普通人

若是加入富二代,状况会是怎样的呢?富人初始资产500,天天要支付的钱是普通人的2倍,可是得到收入的概率也是普通人的2倍。

咱们能够看到,富二代的财富有一部分已经流动到了普通人那里,可是大部分富二代依然位于财富排名前10%的位置。普通人要有极好的运气,才能到达与富二代相同的高度。

Round Four:5个努力的普通人,10个富二代,85个普通人

若是咱们加入一些努力的普通人,会是怎样的呢?经过本身的努力,这部分人得到收入的概率是是普通人的1.01倍。

咱们看到,努力的普通人仅仅是天天多付出一点点汗水,比普通人多了0.01的得到收入的概率,通过时间的发酵,有2我的已经跻身资产排名前10%的位置。另外3我的位于资产排名中上的位置。

富二代中,有1个败家子已经破产,1个败家子将要破产,5个败家子成为了普通人,只有3个守住了财富,依然位于富豪的行列。

有的同窗可能以为不对,富二代中除了败家子,还有努力的富二代。

Round Five:5个努力的富二代,5个努力的普通人,5个富二代,85个普通人

努力的富二代,天天付出多一点的汗水,得到收入的概率是普通人的2.02倍。

咱们能够看到,努力的富二代所有位于资产排名前10%的位置,其中3个不只守住了财富,并且创下新高。

其它的富二代中,有4个位于资产排名前20%的位置,只有1个挣扎在破产的边缘。

努力的普通人依然混得还不错,有1个跻身资产排名前5%,还有3个位于资产排名中上位置。

这个故事告诉咱们,这个世界虽然很残酷,可是努力的人通常运气还不错。

用户们的反馈

可视化反馈

@靖靖:

从这个可视化中注意到的是,富二代基本上稳居上位的,不会掉下来,努力的富二代更是在最前端,从年龄上来看他们享受的是当下的。而普通人也有,也是能够晋升为顶级的人物,可是他们消耗的时间是很是长的,富二代已经享受完了人生,普通人才能晋升到顶级,这时看他们的年龄已经65岁,请问还能活多久呢?

在这个可视化中我看到的是一个轮回,富二代已经享受完了人生,即便最后败了,也是他的下一代败了。普通人拼尽一辈子,即便拼到最顶层,也来不及享受,可是他的子孙会成为富二代。

为何最后资产最高的是个普通人?有点想不通?普通人为何会成功?以为数据有问题。

既然是随机,为何会造成这样的差距呢?

@芒果ʕ •ᴥ•ʔ 兔:

我调整了上面“天天支付5块”,可是主界面显示好像仍是1块。

观察到的信息是:容许负债的状况下,资产的标准差随时间逐渐增大;若是不容许负债,贫富不均的状况仍然会出现,但没有那么大,标准差会增长,但会趋向于平稳。天天支付的钱越多,标准差越大。

@lemontechmaster:

赞~ 界面炫酷

观察到的结论:在默认参数下。随着时间增加,每一个人的资产标准差在扩大。可是修改了天天的支付金额后,标准差的变化就一波动,并无明显趋势。
问题:我点击更多参数,发现程序对人数百分比并无作检验,,而后就显示不太正常了。还有一点是运行时间偏长,开头有点长,我一会就不记得开始的字幕了。
不明白:虽然说标题是残酷的世界,我觉得模拟出来的结果只有富二代等能够生存,但最后显示普通人和努力的普通人竟然资产挺高的。。。

@xujunwei1879

厉害,膜拜。
我不明白的是四种身份的划分,为何每次都不同,是每次运行后都随机按比例从新设定身份吗? 或许是我不明白你的意图,我以为是否是这种身份固定下来比较好?
还一个小小的意见是,面向大众的话,我想大部分人可能不明白标准差是什么含义,作个注释相似于贫富差距是否是更好。
再次膜拜,看了你的我有种绝望的感受。

反馈问题汇总与修改

一、游戏运行时间过长,和每次运行结果都不同?

由于每次运行都是实实在在地运行了一万七千多轮 x 100我的,因此快慢跟设备性能也有关系,两次运行的结果也应该不会相同。

二、大多数人不明白标准差的含义?

是的,我会将 标准差 改为 人跟人之间的财富差距。

三、对不一样角色的人数占比合计超过100%没有作校验?

是的,我会添加这个校验。

四、调整成天天支付5块,可是主界面显示好像仍是1块

通过确认发现,用户是在播放开场字幕的时候调整的,发现字幕的内容没有变化。

这是由于,参数控件是设计用来控制游戏图表的,对字幕没有做用。

因此为了不用户的困惑,我决定在播放开场字幕的时候,先隐藏掉参数控件。

五、为何普通人会成功?

富人只是初始财富高,按照游戏规则他们天天收入多,可是支出也一样多。他们在游戏的一开始会快速成长,并占据优点。

可是由于游戏充满了随机性,普通人在一系列好运的眷顾之下,后期也有逆袭的可能。

我从新看了知乎上的游戏规则,发现个人规则和原游戏规则有出入。原游戏规则是,富人单笔支出多,单比收入和普通人同样,可是得到收入的几率比普通人高。个人规则是富人单笔支出多,单比收入也多,可是得到收入的几率与普通人同样。多是这个细微的差别,产生了不一样的结果。

我将按照原游戏的规则,使用带权重的随机算法。

六、每人天天支付1块钱的这个拖动条是什么含义?数值是多少?

每轮游戏须要支付给另外一我的的钱数。数值显示在Slider下面的文字描述中。

七、是否容许负债这个选项,我分别对两个状况进行了尝试,最后的图形中100我的均没有出现资产为负的状况,请确认一下是否正常工做。

负资产滑块开关开启后,会出现负资产的现象,没有问题。

参考文献

[1].房间内有 100 人,每人有 100 块,每分钟随机给另外一我的 1 块,最后这个房间内的财富分布怎样?

[2].Weighted/Biased Random Number Generation with JavaScript based on Probability

相关文章
相关标签/搜索