找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1973|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

一個對帕里托定律的復(fù)現(xiàn)的C語言小實(shí)驗(yàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:238527 發(fā)表于 2020-2-16 17:01 | 只看該作者 回帖獎勵 |正序?yàn)g覽 |閱讀模式
“帕累托定律”(Pareto law),即只有很少一部分人能獲得最多的資本,并且發(fā)現(xiàn)最成功的人其天賦中庸,但他們卻非常幸運(yùn)。而這樣的結(jié)果也與現(xiàn)實(shí)世界驚人的相似。對該定律做了一個小實(shí)驗(yàn),進(jìn)行了復(fù)現(xiàn)。在本文設(shè)計(jì)的模型中,假設(shè)共有1000個個體,他們的天賦服從均值為0.6、方差為0.1的正態(tài)分布,并且為每個個體賦予了10的初始資本。將這1000個體隨機(jī)的分布在一個正方形區(qū)域內(nèi),他們被一些事件所包圍。這些事件分為幸運(yùn)事件和不幸事件,在初始時,它們被隨機(jī)地分配到正方形區(qū)域內(nèi)。本實(shí)驗(yàn)對這1000個個體進(jìn)行40年的模擬,每六個月,這些事件將進(jìn)行一次移動,并且與個體發(fā)生交互。當(dāng)這些事件與個體相遇時,個體的資本便產(chǎn)生相應(yīng)的變化。其變化規(guī)則為:若是個體與幸運(yùn)事件相遇,則產(chǎn)生一個(0,1)的隨機(jī)數(shù),若這個隨機(jī)數(shù)小于該個體的天賦則將個體的資本翻一倍,否則資本保持不變;若是遇到不幸事件,則將該個體的資本減半。

C語言源程序如下:
  1. ub=1;lb=-1;i=1000;
  2. hold on
  3. for i=1:1000
  4. x=randn(1);y=randn(1);
  5. while x>ub || x<lb || y>ub || y<lb
  6. x=randn(1);y=randn(1);
  7. end
  8. pos(i,:)=[x y];
  9. end
  10. title('隨機(jī)人員圖');
  11. figure(1);
  12. plot(pos(:,1),pos(:,2),'o');

  13. ub=1;lb=-1;i=250;
  14. hold on
  15. for i=1:250
  16. a=randn(1);b=randn(1);c=rand
  17. while a>ub || a<lb || b>ub || b<lb
  18. a=randn(1);b=randn(1);
  19. end
  20. pos1(i,:)=[a b];
  21. end
  22. plot(pos1(:,1),pos1(:,2),'*r')

  23. ub=1;lb=-1;i=250;
  24. hold on
  25. for i=1:250
  26. a=randn(1);b=randn(1);c=rand
  27. while a>ub || a<lb || b>ub || b<lb
  28. a=randn(1);b=randn(1);
  29. end
  30. pos2(i,:)=[a b];
  31. end
  32. plot(pos2(:,1),pos2(:,2),'*g')

  33. legend('人員','幸運(yùn)事件','不幸事件');

  34. for i=1:1:1000
  35.     GN(i,1)=0;
  36.     BN(i,1)=0;
  37. end

  38. T=normrnd(0.6,0.1,1000);

  39. for i=1:1:1000
  40.     w(i,1)=10;
  41. end

  42. for i=1:1:80
  43.         for j=1:1:1000
  44.             for k=1:1:250
  45.             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
  46.                 if rand(1)<T(j,1)
  47.                 w(j,1)=2*w(j,1);
  48.                 GN(j,1)=GN(j,1)+1;
  49.                 end
  50.             end
  51.             end
  52.             for k=1:1:250
  53.             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
  54.                 w(j,1)=0.5*w(j,1);
  55.                 BN(j,1)=BN(j,1)+1;
  56.             end
  57.             end
  58.         end
  59.     for m=1:1:250
  60.         [pos1(m,1),pos1(m,2)]=move(pos1(m,1),pos1(m,2));
  61.     end
  62.     for m=1:1:250
  63.         [pos2(m,1),pos2(m,2)]=move(pos2(m,1),pos2(m,2));
  64.     end
  65. end

  66. figure(2);
  67. i=1:1:1000
  68. plot(i,w(i,1),'b')
  69. title('財(cái)富分布圖');
  70. xlabel('人員');
  71. ylabel('財(cái)富');

  72. figure(3);
  73. q=1:1:1000
  74. plot(q,T(q,1),'b')
  75. title('天賦分布圖');
  76. xlabel('人員');
  77. ylabel('天賦');

  78. [b,in]=sort(w);
  79. Totalw=sum(w);
  80. Partw=sum(b(801:1000,:),1);
  81. P=Partw/Totalw;
  82. disp('******');
  83. disp(P);
  84. disp('******');

  85. disp(w(in(1000),1)),disp(T(in(1000),1)),disp(GN(in(1000),1)),disp(BN(in(1000),1));disp('******');
  86. disp(w(in(999),1));disp(T(in(999),1));disp(GN(in(999),1));disp(BN(in(999),1));disp('******');
  87. disp(w(in(998),1));disp(T(in(998),1));disp(GN(in(998),1));disp(BN(in(998),1));disp('******');
  88. disp(w(in(997),1));disp(T(in(997),1));disp(GN(in(997),1));disp(BN(in(997),1));disp('******');
  89. disp(w(in(996),1));disp(T(in(996),1));disp(GN(in(996),1));disp(BN(in(996),1));


  90. function  [X,Y]=move(x,y)
  91. r=1.5/201;
  92. theta=randn(1)*pi;
  93. while theta>pi || theta<-pi
  94. theta=randn(1)*pi;
  95. end
  96. X=x+r*cos(theta);
  97. if X>1
  98.     X=x-r*cos(theta);
  99. end
  100. if X<-1
  101.     X=-r*cos(theta)-x;
  102. end
  103. Y=y+r*sin(theta);
  104. if Y>1
  105.     Y=y-r*sin(theta);
  106. end
  107. if Y<-1
  108.     Y=-r*cos(theta)-y;
  109. end
  110. end
復(fù)制代碼

全部資料51hei下載地址:
帕累托定律.zip (1.3 KB, 下載次數(shù): 5)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表