“帕累托定律”(Pareto law),即只有很少一部分人能獲得最多的資本,并且發現最成功的人其天賦中庸,但他們卻非常幸運。而這樣的結果也與現實世界驚人的相似。對該定律做了一個小實驗,進行了復現。在本文設計的模型中,假設共有1000個個體,他們的天賦服從均值為0.6、方差為0.1的正態分布,并且為每個個體賦予了10的初始資本。將這1000個體隨機的分布在一個正方形區域內,他們被一些事件所包圍。這些事件分為幸運事件和不幸事件,在初始時,它們被隨機地分配到正方形區域內。本實驗對這1000個個體進行40年的模擬,每六個月,這些事件將進行一次移動,并且與個體發生交互。當這些事件與個體相遇時,個體的資本便產生相應的變化。其變化規則為:若是個體與幸運事件相遇,則產生一個(0,1)的隨機數,若這個隨機數小于該個體的天賦則將個體的資本翻一倍,否則資本保持不變;若是遇到不幸事件,則將該個體的資本減半。
C語言源程序如下:
- ub=1;lb=-1;i=1000;
- hold on
- for i=1:1000
- x=randn(1);y=randn(1);
- while x>ub || x<lb || y>ub || y<lb
- x=randn(1);y=randn(1);
- end
- pos(i,:)=[x y];
- end
- title('隨機人員圖');
- figure(1);
- plot(pos(:,1),pos(:,2),'o');
- ub=1;lb=-1;i=250;
- hold on
- for i=1:250
- a=randn(1);b=randn(1);c=rand
- while a>ub || a<lb || b>ub || b<lb
- a=randn(1);b=randn(1);
- end
- pos1(i,:)=[a b];
- end
- plot(pos1(:,1),pos1(:,2),'*r')
- ub=1;lb=-1;i=250;
- hold on
- for i=1:250
- a=randn(1);b=randn(1);c=rand
- while a>ub || a<lb || b>ub || b<lb
- a=randn(1);b=randn(1);
- end
- pos2(i,:)=[a b];
- end
- plot(pos2(:,1),pos2(:,2),'*g')
- legend('人員','幸運事件','不幸事件');
- for i=1:1:1000
- GN(i,1)=0;
- BN(i,1)=0;
- end
- T=normrnd(0.6,0.1,1000);
- for i=1:1:1000
- w(i,1)=10;
- end
- for i=1:1:80
- for j=1:1:1000
- for k=1:1:250
- if sqrt((pos(j,1)-pos1(k,1))*(pos(j,1)-pos1(k,1))+(pos(j,2)-pos1(k,2))*(pos(j,2)-pos1(k,2)))<1/201
- if rand(1)<T(j,1)
- w(j,1)=2*w(j,1);
- GN(j,1)=GN(j,1)+1;
- end
- end
- end
- for k=1:1:250
- if sqrt((pos(j,1)-pos2(k,1))*(pos(j,1)-pos2(k,1))+(pos(j,2)-pos2(k,2))*(pos(j,2)-pos2(k,2)))<1/201
- w(j,1)=0.5*w(j,1);
- BN(j,1)=BN(j,1)+1;
- end
- end
- end
- for m=1:1:250
- [pos1(m,1),pos1(m,2)]=move(pos1(m,1),pos1(m,2));
- end
- for m=1:1:250
- [pos2(m,1),pos2(m,2)]=move(pos2(m,1),pos2(m,2));
- end
- end
- figure(2);
- i=1:1:1000
- plot(i,w(i,1),'b')
- title('財富分布圖');
- xlabel('人員');
- ylabel('財富');
- figure(3);
- q=1:1:1000
- plot(q,T(q,1),'b')
- title('天賦分布圖');
- xlabel('人員');
- ylabel('天賦');
- [b,in]=sort(w);
- Totalw=sum(w);
- Partw=sum(b(801:1000,:),1);
- P=Partw/Totalw;
- disp('******');
- disp(P);
- disp('******');
- disp(w(in(1000),1)),disp(T(in(1000),1)),disp(GN(in(1000),1)),disp(BN(in(1000),1));disp('******');
- disp(w(in(999),1));disp(T(in(999),1));disp(GN(in(999),1));disp(BN(in(999),1));disp('******');
- disp(w(in(998),1));disp(T(in(998),1));disp(GN(in(998),1));disp(BN(in(998),1));disp('******');
- disp(w(in(997),1));disp(T(in(997),1));disp(GN(in(997),1));disp(BN(in(997),1));disp('******');
- disp(w(in(996),1));disp(T(in(996),1));disp(GN(in(996),1));disp(BN(in(996),1));
- function [X,Y]=move(x,y)
- r=1.5/201;
- theta=randn(1)*pi;
- while theta>pi || theta<-pi
- theta=randn(1)*pi;
- end
- X=x+r*cos(theta);
- if X>1
- X=x-r*cos(theta);
- end
- if X<-1
- X=-r*cos(theta)-x;
- end
- Y=y+r*sin(theta);
- if Y>1
- Y=y-r*sin(theta);
- end
- if Y<-1
- Y=-r*cos(theta)-y;
- end
- end
復制代碼
全部資料51hei下載地址:
帕累托定律.zip
(1.3 KB, 下載次數: 5)
2020-2-16 16:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|