从知乎有一个很有趣的问题:房间里有100个人,每人都有100元钱,如果每过一分钟,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的?
这个问题,可以看成一个小型实验,模拟的是规则绝对公平时,社会财富的流向。财富随机流动的话,贫富差距是否就会消失呢?
城市数据团用程序模拟了这个过程:
就这样,80%的钱跑进了20%的口袋里。即使在最公平的规则下,世界依然展现出了残酷的一面。
更何况,真实的财富流动并不随机。
有个段子是这么说的:
我告诉你一个一年稳赚两百万的办法……往银行里存一个亿定期,一年稳赚两百万。
笑话归笑话,事实也确实如此,原始资本往往是积累财富最有效的方式之一。
关于关于允许负债,富二代财富积累,低保+税收下的实验结果请访问原文作者:http://www.sohu.com/a/159059809_167388
当然知乎上另有高人对原文作者提出了异议:这篇文章犯了一大堆概率论经典错误。他算的那个正态分布是每个个体手上的钱,原文算的是群体排序后的财富分布,根本就不是在算同一个东西。。。请访问:https://www.zhihu.com/pin/877873289857478656
自己写了个代码(不允许负债):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#include<iostream> #include<ctime> #include<stdlib.h> #include<algorithm> #include<cstdio> using namespace std; int main() { int population=0,total=0,individual=0,generation=0,figure=0,temp=0; cout<<"人数:"; cin>>population; cout<<"初始每人拥有的资产:"; cin>>individual; cout<<"迭代次数:"; cin>>generation; cout<<"每一代交换金额:"; cin>>figure; total=population*individual; cout<<"社会财富总量:"<<total<<endl; cout<<"start"<<endl; srand((unsigned)time(NULL)); int *num=new int[population]; for(int i=0;i<population;i++)num[i]=individual; while(generation>0){ for(int i=0;i<population;i++){ if(num[i]>0){ num[i]-=figure; temp=rand()%population; num[temp]+=figure; } } generation--; } total=0; for(int i=0;i<population;i++)total+=num[i]; cout<<"社会财富总量:"<<total<<endl; cout<<"每个人的资产"<<endl; sort(num,num+population); for(int i=0;i<population;i++){ if((i)%10==0)cout<<endl; printf("%5d",num[i]); } return 0; } |