房間內有 100 人,每人有 100 塊,每分鐘隨機給另一個人 1 塊,最後這個房間內的財富分布怎樣?

https://zhuanlan.zhihu.com/p/27797001?group_id=867778281376727040

為什麼計算機跑出這個結果/分布呢?這個結果對系統說來更穩定嗎?


N人共有M元的情況下:

  1. 最終的分布是 在標準(N-1)-單純形(Simplex)上 邊長為M的格點上的隨機遊走(Random walk) 的穩態分布 的各分量的分布;
  2. 隨機遊走相當於求解離散空間的熱傳導方程(Heat equation)
  3. 在一定條件下,穩態分布近似單純形上的均勻分布——對稱狄利克雷分布(Dirichlet distribution),其分量服從指數分布(Exponential distribution)

註:以下是每分鐘「某個人」給另一個人錢的情況,而不是每分鐘(還有錢的)「每個人」給另一個人錢情況。請注意這兩者的區別,詳細見評論。

====================

一個極重要的隱含假設是,我們不允許負債。令x_i表示第i個人的錢數,則所有的可行狀態在以下空間內:

x_1+...+x_N=M, quad where quad x_iin {0,...,M}, iin{1,...,N}

這是一個邊長(一個頂點到另一個頂點的格點數)為M的(N-1)-單純形上的所有整數點

(注意一般地標準單純形的定義是在實空間上的,是內部的所有實數點。在這裡我們盜用了這個術語...)

易知狀態的總數為C(M+N-1, N-1)。當N=100,M=100*100 時(100人每人100元),狀態總數的量級在10^240的級別。直接求解幾乎不可能..

例如,當有3人每人有2元(共6元)時,狀態空間是邊長為6的2-單純形(正三角)上的所有整數點。

當初始狀態為絕對平均的 (222) 時,隨時間變化相當於以該點為起始 在這個空間上的無偏隨機遊走

====================

這樣的隨機遊走理論上是可以得到穩態的。考慮一個簡單的2人各2元的情況,狀態空間為 (40), (31), (22), (13), (04);狀態轉移矩陣為

egin{bmatrix} 0  .5 \ 10.5\  .5  0  .5 \ .5  0  1 \  .5  0 end{bmatrix}

易得穩態分布為[1,2,2,2,1]/8。

直觀上,在除了邊界的區域上分布應該是均勻的。(未證明)

但由上述,狀態空間極大,錢數多時像這樣直接求解十分困難。

====================

一般地,令p_n(x)為時間為n時狀態為x的概率,定義格點上的運算元Δ如下

Delta p(x)=sum_{y:d(x,y)=1}[p(y)-p(x)]

其中d(x,y)是兩點之間的距離。d(x,y)=1 表示x和y是相鄰的,可以從一點轉移到另一點。

則狀態轉移方程可以寫為

frac{partial p_n(x)}{partial n} = alpha Delta p_n(x)

其中α控制轉移的速度。

有沒有發現和熱傳導方程有點像?

frac{partial u}{partial t} = alpha 
abla^2u

其實上述定義的Δ運算元就是圖上的離散Laplacian (Discrete Laplace operator),方程是圖上的離散熱傳導方程。隨機遊走的穩態分布可以近似看作是熱傳導的終態。(未證明)

====================

====A HUGE GAP=====

====================

注意到 M錢數多-&>格點密集,N人數多-&>單純形維數高。

我們考慮在某種條件下,以連續熱傳導方程近似格點上的隨機遊走。進一步地,忽略對邊界上的討論,將終態視為單純形上的均勻分布。(未證明)

(注意這裡有一個極大的gap,我們未嚴格討論在什麼情況能用連續Laplace運算元代替圖上的Laplacian)

User:Skinnerd/Simplex Point Picking 這裡討論了如何在單純形上隨機取樣或模擬隨機遊走。注意到單純形上的均勻分布相當於參數α=(1,1,...,1)的狄利克雷分布,其分量服從指數分布(?)。具體地:

x_i sim Exponential(1), S = sum x_i, t_i=frac{x_i}{S} quad (i=1,...,N)

則t_i是標準N-單純形上的均勻分布。

====================

若上述成立,500人各500元時最終大概會變成這樣子:

此外我們注意到,當N變大時,單純形維數高,由於維數災難,大部分點是在「邊角」處的。

N-單純形的體積是frac{1}{n!}sqrt{frac{n+1}{2^n}}

單純形的中心(最均勻的分布)距離最近的邊界(其中1人為0其他人均勻分布)的距離是sqrtfrac{1}{2n(n+1)}

單純形內接球在單純形中的佔比為

也就是說,人數超過10人時,經過一定時間的交換,幾乎一定至少有一個人「破產」

====================

這篇回答只是提供一個可能的方向,如何聯繫隨機遊走和熱方程。充滿了大大小小的gap,但我並沒有時間深究了。我找到了這本書:

[1] G. F. Lawler, 「Random Walk and the Heat Equation.」

看起來蠻有趣的。希望有讀者能夠解釋一下如何嚴密地聯繫離散時間離散狀態和連續時間連續狀態,在什麼情況下可以近似,以及如何隨時間變化等等。歡迎討論。


不需要那麼多物理假設, 純粹的數學解法也能給出顯式解.

整個過程應該分為兩個階段,第一個階段是有人破產前,第二個階段有人破產後.


無破產模型

假如大家都非常有錢, 那麼短時間內就不會破產

所以這個階段等價於無破產模型

取32人做10000次交易操作,做一個排序:

好像不太明顯...來1K個人交易100K次看看:

這個曲線的解析表達式是什麼呢?


無偏隨機遊走

假如人很多,那麼每個人就可以近似的看成隨機遊走.

這個是 @王贇 Maigo 的想法

每個人得到錢的期望是1元,自己每回合又要給別人1元,所以這就是無偏隨機遊走

無偏隨機遊走的距離隨時間成二項分布.

二項分布是正態分布的離散化,人很多(n&>12)用正態分布替代也無妨.

也就是說用財富劃分區間,然後統計人數之後的分布近似是正態分布.

排序在這當中起了什麼作用呢?

排序相當於是求次序統計量(OD)的逆累計分布函數(ICD).

統計學上有個專門的叫法: q分位數

很多知友很有數學直覺,認為這個結果必定是由於某種量的累積.

然後歸結於隨機演算法的誤差...

這就說不過去了, 蒙特卡羅法是現代工程的支柱,以大數律為擔保.

@靈劍 一針見血的指出了這是由於方差的累積

事實上也確實如此

無偏隨機遊走的均值不會改變,開始是100,不管多少時間之後還是100.

但是方差卻不斷地累積,方差與時間平方成正比.

引證: 隨機遊走中,怎麼理解最終行走距離的平方的期望等於步數?

所以最終這條曲線的解析表達式就是:

f(q)=mu -sqrt{2t}  	ext{erfc}_{-1}left(frac{2 q}{	ext{N}}
ight)

其中 t 是經過的時間, mu 是開始時的總金額, N 是總人數

t=10000 N=100

第一個破產者出現在 t=frac{mu ^2}{2 	ext{erfc}_{-1}left(frac{2}{	ext{N}^2}
ight)^2}approx 1287 回合時.


帶反射壁的隨機遊走

接下來就是 @張雨萌 的思路:

破產者接下來還是隨機遊走---帶反射壁的隨機遊走

從原點出發,可以使用鏡像法研究

從原點 (0,0) 出發經過 (n,v) 的概率是:

P_n(v)=inom{n}{frac{1}{2}(n+v)}p^frac{1}{2}(n+v)q^frac{1}{2}(n-v)

然後我們把起始點從 (0,0) 移動到(0,mu)

P_n(v)=inom{n}{frac{1}{2}(n+v-mu)}p^frac{1}{2}(n+v-mu)q^frac{1}{2}(n-v+mu)

p=q=frac{1}{2} , 當 n 很大時, 服從韋伯分布

P_nsimmathrm{Weibull}(alpha,mu,0) , alpha 為需估計參數,與 n,mu 都相關.

引證: https://arxiv.org/pdf/math/0603208.pdf

韋伯分布的經典用途就是壽命估計

對於人類來說, 出現致命意外概率一開始比較小,後面會變大, 然後最後可能趨於一個常數,按照這個模型可以精確地估計人類壽命分布.

這個模型也是這樣, 一開始有破產風險的人沒有,然後有一點點, 最後穩態的時候趨於一個常數.

但是上有破產風險的人只佔一小部分,實際上無窮多人的話這部分人的測度為 0.

所以可以近似為無衰減韋伯分布,即 alpha approx1 , 也就是所謂的指數分布.

qsimmathrm{Weibull}(1,mu,0)=mathrm{Exp}(1/mu)quad mu為初始金額

所以最終穩態時曲線的解析表達式就是

f(q)=-mu log left(1-frac{q}{	ext{N}}
ight)


綜上所述:

房間內有 100 人,每人有 100 塊,每分鐘隨機給另一個人 1 塊,最終財富曲線就是 f(q)=-100 ln left(1-frac{q}{100}
ight)

為了消去奇點, 每個人左平移半格比較合適.

q=100 時理論解是無窮大, Exciting...

PS: 好像物理方法估出來是玻爾茲曼分布?

我查了下玻爾茲曼分布,發現似乎和韋伯分布差不多?

從最大熵分布的角度上看:

玻爾茲曼的熵約束是: {displaystyle operatorname {E} (x^{2})=3a^{2},,operatorname {E} (ln(x))!=!1!+!ln left({frac {a}{sqrt {2}}}
ight)!-!{frac {gamma _{mathrm {E} }}{2}}}

韋伯分布的熵約束是: {displaystyle operatorname {E} (x^{k})=lambda ^{k},operatorname {E} (ln(x))=ln(lambda )-{frac {gamma _{mathrm {E} }}{k}},}


不平等度

不平等度可以用勞倫茲曲線來研究.

如果累積分布函數為 F(t),t>0 ,那麼有:

勞倫茲曲線: L(x)=frac {1}{mu }int_0^x F_{-1}(t) mathrm{d}t

指數分布 mathrm{Exp}(1/mu) 的CDF為 F(t)=1-e^{-frac{t}{mu }} .

所以勞倫茲曲線為 L(x)=x+(1-x) log (1-x) ,與人數和時間都無關.

所謂基尼係數就是均等曲線與勞倫茲曲線圍成的面積(黃色部分)與三角形的比值

基尼係數: G={frac {1}{mu }}int _{0}^{infty }F(t)(1-F(t)) mathrm{d}t, 算得基尼係數恆為 0.5

勞倫茲曲線以及基尼係數與 時間 人數 無關


人生經驗

隨機造就了幸運兒, 隨機也會造就流浪漢...

人人都在隨機遊走,人的命運不可預料.....

如果你是個聰明人, 能比別人看的更准 1^circ ,那你至少能進入上層.

如果你是個冒險者, 你願意付出雙倍代價,去獲取雙倍回報.

那麼在第一種社會中很容易破產, 但是在第二個福利社會中十有八九是人生贏家.

如果你一貧如洗,那就只能隨波逐流,如果你本就是人生贏家,那有可能贏者通吃...

當然, 時間的力量是神奇的, 任何人都可能觸底, 任何人也都可以走上人生巔峰...


我看了一圈模擬結果,但大家的程序(比如非同步update啊給自己錢之類的)或者是統計(做模擬不做系綜平均、不統計PDF、不驗證自己有沒有達到穩態)都或多或少有些問題。我只能自己來做了。

我們先取100人100塊錢的情景。我模擬了10^6個系統作為系綜平均,並且做了兩次模擬,一次10^5輪,一次10^6輪。這裡統計的是一個人擁有某個數額的錢的概率。y軸是對數軸,而且上圖只是下圖的局部放大。

首先,我可能依然沒有達到不變分布,說明這個系統的relaxation time非常長。模擬步數在10^5量級以下的結果都可以不用看了。10^6夠不夠我不知道,我會再做一個4x10^6步的模擬,但這可能需要兩天的時間。

其次,分布的確有一個指數的尾巴,如 @張雨萌 所估計。而且玻爾茲曼分布可以給一個比較接近的估計。但是這個分布的頭部和玻爾茲曼分布差別巨大,也如 @張雨萌 所估計。應該可以肯定的是這不是精確的玻爾茲曼分布,只是一定程度上的近似。

至於我老闆,作為統計物理學界的rising star,對這個問題的評論是:這是一個zero-range process with fully connected network。他做過這類問題的一維情況(the steady state and dynamics),他認為這個問題只是把network geometry修改一下(但他們對於geometry起多大作用有一些爭議),所以應該也有exponential tail。他的思路可不是直接武斷地假定玻耳茨曼分布的條件完全吻合,望同行們共勉。

========================================

我這裡並不是回答問題,只是總結一些我覺得應該被仔細討論的地方。

很多答主都在考慮玻爾茲曼分布,我覺得還是需要小心考慮玻爾茲曼分布的前提條件。在經典體系中,我們首先假定系統是可以分成近獨立子系的,這意味著,如果我們挑兩團人,分別擁有的錢是m_1和m_2,那麼狀態數(近似)滿足乘法原理

Omega(m_1+m_2)=Omega(m_1)Omega(m_2)

正是這個假設導致了玻爾茲曼分布。

經典熱力學中我們之所以可以做這個假設,是因為所有的相互作用都是短程的。我們把物體分成「微觀無窮大、宏觀無窮小」之後,因為相互作用只發生在每個子系的交界處,存在關聯的區域體積相對於整個子系的體積是可以忽略的,因此我們有了這個假設。

按照下面那個鏈接中的文章的說法,如果把題目的條件改成每個時間步只有隨機的一對人發生了交易,那麼這個假設在人數趨於無窮的時候或許可以成立,因為兩個子系間發生的相互作用的概率(~N^2)依然小於子系內部的相互作用(~2N(N-1))。至少他們的模擬的確得到了玻耳茲曼分布。

但他們也注意到了,更為重要的一點是微觀交易的時間反演對稱性。如果微觀交易沒有時間反演對稱,一個子系可以通過相互作用不可逆地改變另一個子系的狀態,那麼不可能有近獨立子系。結果就是最終的分布不滿足玻爾茲曼分布。具體的例子可以參見http://physics.umd.edu/~yakovenk/papers/EPJB-17-723-2000.pdf,其中的第7節。如果每個時間步只有一對人交易,而且交易額是固定值,那麼時間反演對稱性還在。然而僅僅將交易額改為固定比例,時間反演對稱性被破壞,分布就已經不是玻爾茲曼分布了。

然而對於題設的條件,每一時間步所有的有錢人都要給固定的錢,相互作用不再是時間反演對稱的了:一個人在一個時間步可以獲得最大N塊錢,但最多只能失去1塊錢,而且不對稱的狀態轉移不僅僅發生在邊界,比如(4,4,4,4)-&>(3,3,4,6),那麼使用玻爾茲曼分布就值得懷疑了。

很多考慮傾向於假定系統撞不到邊界,但這得到的只能說是暫態的分布,而不是不變分布。

而且我更關心普遍的結果,而不是人數和錢數都趨於無窮的近似……


我來從「單個人」的角度分析一下。如果不考慮沒有人沒錢了的情況,那麼每個人每輪的付出為 1,期望收入也是 1。這可以看成一個無偏的隨機遊走。如果我沒記錯的話,這個隨機過程是常返的,但期望返回時間為無窮大。用通俗的話說,就是任意一個人都會有沒錢了的一天(同樣每個人也都有飛黃騰達的一天),雖然要這一天可能要等到永遠。

題目中描述的規則,是在上面這個隨機遊走的兩端設置了一些障礙,以防止走得太遠。具體來說,在「沒錢了」這邊設置了一道牆,阻止錢數變成負的;而一個人手裡的錢越多,其他人手裡沒錢的概率就越大,所以他的期望收入也會相應減小。這樣的隨機遊走當然還是常返的,期望返回時間變成有限的了(因為錢數上下都有限),但依然會很久。


補充:多位知友指出,在可負債的情形下,財富分布更接近正態分布;接近冪律分布的情形僅在不可負債的情景下成立。我經過測試後,發現現象上確實如此,但未經過嚴格數學證明(沒錯,就是數學爛……在此拋磚引玉,請各位大神不吝賜教)。

----------

這個問題很有趣,許多知友用不同的方法給出了回答。

但我還是要來湊個熱鬧。我採用的方法是程序模擬(沒辦法,數學爛啊)。

以下為正文。

-----------

我們不妨把這場遊戲視作社會財富分配的簡化模型,從而模擬這個世界的運行規律。我們假設:每個人在18歲帶著100元的初始資金開始玩遊戲,每天玩一次,一直玩到65歲退休。「每天拿出一元錢」可理解為基本的日常消費,「獲得財富的概率隨機」是為了……嗯……簡化模型。以此計算,人一生要玩17000次遊戲,即獲得17000次財富分配的機會。

下面,我們就來回答一下。

在上述規則下,遊戲運行17000次的結果如下圖所示:

(說明:1.上圖中橫軸標籤代表一個玩家的編號,柱子的高低變動反映該玩家財富值的變化。2. 當某人的財富值降到0元時,他在該輪無需拿出1元錢給別人,但仍然有機會得到別人給出的錢。)

可以看到,每個玩家財富值的變動是極為劇烈的。為了方便描述整個社會財富的分配狀況,我們又按照財富值的排序做了下圖:

(說明:上圖中橫軸標籤代表玩家排序(非編號),排序越高的財富越多。初始時所有人的財富值相等,隨著遊戲的進行,財富值差距越來越大。)

沒錯,財富的分配接近於冪律分布(結論只是程序模擬,而非數學精確求解)。最後,社會將有很少的富人和很多的窮人:

  • 最富有的人的財富值約為初始財富的3.5倍;
  • top10%的富人掌握著大約30%的財富,top20%的富人掌握著大約50%的財富;60%的人的財富將縮水到100元以下。

就這樣,大部分人的錢跑進了少部分人的口袋裡。即使在最公平的規則下,世界依然展現出了殘酷的一面。以上結果與大多數知友的答案一致。

在此基礎上,我們又設計了更多的情景,同樣用程序進行了模擬。

允許借債會讓世界變得好一點嗎?

在現實社會中,情境會更複雜一些。比如說,當我們沒錢了,還可以找親友、找銀行、找投資人借債,說不定哪天就東山再起了呢。在允許借債的情況下,遊戲結果如下圖所示(排序後結果):

結果表明:

  • 遊戲結束時,最富有的人的財富值約為初始財富的4倍;
  • top10%的富人掌握著大約33%的財富,top20%的富人掌握著大約56%的財富;大約25%的人背負著債務,最高負債約為200元。

沒錯。借債雖然能讓我們在走投無路時多一些周轉餘地,但最終會讓窮人變得更窮。

屌絲真能逆襲嗎?

我們以所有玩家財富值的標準差來衡量社會貧富分化程度,按時間序列做出圖來長這樣:

(說明:橫軸表示遊戲輪數,縱軸表示社會財富的標準差)

可以看到,遊戲早期的標準差變動最為激烈,而在6000-6500輪遊戲後,標準差的變化趨於平緩,也就是社會財富分布的總體形態趨於穩定了。按照我們設定的遊戲與人生的對應規則,這時玩家年齡為35歲。

這個結果告訴我們,35歲之前,人與人之間的差距已經完全拉開了。

進一步看,如果一個人在35歲時破產,還有沒有可能逆襲呢?

本次模擬結果中,有15個人在35歲的最後一天時處於破產(負債)狀態,而他們在此後的財富值及排名如下圖所示:

(說明:上圖中的紅色柱子為在35歲時破產的玩家,綠色柱子為其他玩家。紅色柱子在縱軸上的高度變化表示其財富值變化,在橫軸上的位置變化表示其排名變化。)

可以看到,當這15個人在65歲退休時,有7人仍然處於破產狀態;有8人還清債務並有了財富積累,但離富豪仍有相當差距。

看來,以35歲為界,雖然破產以後,仍有一半概率回復到普通人的生活,但想要逆襲暴富,卻是相當困難的。

所以,發財要趁早,大齡屌絲逆襲更像是一個傳說。

富二代和普通人有什麼區別?

在真實社會中,每個人的起點其實並不相同。總有一些富二代、富三代,在財富遊戲的開始就佔盡了便宜。這一點也應該被考慮到我們的模型中。

為了簡化計算,我們假設只有兩類玩家:90個普通玩家(設定同上)+10個富二代玩家。富二代玩家的初始財富是500元,他們在每輪遊戲中需要拿出2倍的錢,同時獲得財富的幾率也是普通人的2倍。遊戲結果如下圖所示(排序後結果):

(說明:上圖中的紅色柱子為富二代玩家,綠色柱子為普通玩家。)

雖然這個分布形態與全是普通玩家的結果基本一致:top10和top20的富人掌握的社會財富比例和負債的人數比例都差不多,但是仔細來看,top5富人中的全部,以及top10富人中的7位都是富二代玩家。

我們在富二代玩家(紅色線條)和普通玩家(綠色線條)中各選5位,繪製出他們的財富值變化圖:

可以看到,富二代玩家中雖然也有「敗家子」,但他們仍有很大概率將財富值維持在較高水平。富二代們和普通人生活在兩個世界中,偶有交集而已。

沒錯,普通人要有極好的運氣,才能到達與敗家富二代相同的高度。

對富人徵稅會改變財富分布嗎?

為了緩和貧富分化帶來的諸多矛盾,在真實社會中有許多轉移支付的手段,稅收就是其中一種。

本輪遊戲中,玩家的初始財富同為100元,每輪遊戲中玩家獲得1元錢的概率相等。但若被選中的玩家在該輪遊戲時的財富值高於200元,則他只能獲得60%的收益;而另外40%的收益將平分給財富值低於0元的所有玩家(相當於破產者的低保)。模擬結果如下圖所示:

可以看到,在「稅收+低保」的遊戲規則下,社會財富分布仍然是高度極化的,區別只是基本消滅了破產者,同時富有的人沒那麼富了而已。

收稅可以平緩世界的分化,但是並不容易改變世界的殘酷本質(除非大大加強轉移支付的力度)。

努力的人生會更好嗎?

我們中的絕大多數人,沒有一飛衝天的發財運氣,也沒有腰纏萬貫的爹,更不甘於吃低保。想要改變命運,我們只能選擇自己更努力,去爭取更好的生活。

我們假設每個玩家的初始財富仍然為100元,但有10人比別人加倍努力,從而獲得了1%的競爭優勢,即贏得收益的概率比別人高出1%,模擬結果如何呢?

(說明:上圖中的紅色柱子為更努力的玩家,綠色柱子為普通玩家。)

可以看到,社會財富的總體分布形態沒有什麼變化。但是,10位努力玩家中的9位都進入了富人top20!

是的,儘管最成功的玩家不一定是最努力的那個,但是努力的人大都混的還不錯。感謝這個殘酷世界還給我們留下一條生路。

看到這裡,相信各位讀者已經對這個問題有了自己的答案:

該如何面對這個殘酷的世界?

那就是

努力

並堅持下去

註:

1. 本文中的結果由計算機程序模擬得到,而非數學精確求解。儘管文中做了多種假設,但實際的社會財富分配機制仍比模型中複雜許多。模型給出的結果與真實社會仍然存在相當大的差異。

2. 歡迎加入數據團學社(團學社qq5群:615595782),或在網易雲課堂搜索「城市數據團」,參加我們的數據能力培訓課程。「數據達人培養計劃」限時打包8折優惠,教授大家從數據獲取、分析到可視化的一整套工作流程。如果本篇文章在7月31日前不被刪除,我們將抽取從即日(7月21日)到7月31日之前購買課程的三名學員,送出簽名版數據團新書《數據不說謊:大數據之下的世界》一書。


出門在外只能手機回答。謝@Mather King邀請。
n個人每個人起始m元,n很大時可以假設一切都處在平穩態。

假設擁有k元的人的比例為f(k)。
sum_k f(k) =1, sum kf(k) = m

那麼每個回合的行動可以近似為:首先全體(1-f(0))n的有錢的人各減一元,然後將這些錢隨機均勻的分給所有人(嚴格來說每個人的錢不能還給自己,但n很大時這個誤差很小。)平均每個人分到Poisson(1-f(0))元。

所以如果關注一個個體,如果該個體某一步有k元,那麼下一時刻的分布近似為
k-1{k&>0}+Poisson(1-f(0))。

根據平穩條件和m的值能可以解出f(0)和全部的平穩分布。只看一個個體大致就是一個bias = -f(0),0點有反射壁的隨機遊走,所以的確是正常返的,bias雖m增大而迅速減小。

平穩分布大概是個指數級的尾部。比冪律好,比正態確實慢。而且考慮從均勻分布出發,「mixing time」 估計很大。

----

確實挺神奇一結論,具體為什麼還得想一想。 推測如果不是完全圖(任意兩人都能給錢)而是稀疏圖(每個人只會給有限個好友之一)的話會更平均一些。

----

關於這道題好像有一些爭論。有關「指數分布」和「均勻分布」哪個才是最大熵。其實這個爭論的背後是對狀態空間的一些誤解。考慮以下幾種問題

1. 「如果我有一塊錢,我要怎麼分給100個人」

這樣的狀態空間是[1,100]上的概率分布。

2. "如果我從100個人中隨機取一個人,那個人的錢數是多少"?

這樣狀態空間是一個正整數上的概率分布(每種錢數的人數)。

3. 「如果我寫一段code,運行足夠長時間,我看到的錢的分布是多少」?

這樣狀態空間是上面一種情形的狀態空間上的一個概率分布, 所謂empirical distribution。

在以上問題中

第一個問題對應的最大熵是[1,100]上的均勻分布

第二個問題對應的是[0,infty)上的指數分布,具體參數由期望決定

第三個問題的具體答案我不知道,大偏差意義下出現一種empirical distribution的概率的對數(under proper scaling)大概和該分布距第二個問題中的指數分布的KL-divergence呈正比。

然而我不太能理解的是,運用Boltzmann分布的條件是什麼,比如這裡的答案雖然有著exponential tail,但絕對不是嚴格意義下的exponential distribution。

@KetoneHu 的simulation也說明了這一點。(少女你見過中間鼓包的exponential distribution么……)

我猜測問題的原因可能是這裡並不是嚴格意義下的「heat bath」 dynamics,因為存在能量為0的情形,而且不能存在負能量。


好奇模擬了一下,如下:

每人初始100元,500人,10000次

import random

init_gold, person, minutes = 100, 500, 10000
golds = [init_gold] * person

for m in range(minutes):
for p in range(person):
if golds[p] &> 0:
golds[p] -= 1
choice_person = random.randint(0, person - 1)
golds[choice_person] += 1

for i in golds:
print i

最終結果如圖:

將其排序得到:

如果我們假設當一個人沒有錢可給時,可以"打欠條",最終結果如圖:

同樣排序後得到:

Ps:

好奇在這樣一個完全隨機的情況下是不是人人都是曾經的大富翁。

在4次一萬次模擬中分別得到了41,33,32,32人是遊戲中的曾經某一時刻的大富翁。

在4次十萬次模擬中分別得到了40,34,41,66人是遊戲中的曾經某一時刻的大富翁。


雖然不是這個領域的專家,但是這個題涉及到收入不平等的問題,為了避免大家看了這個模擬後,產生一些誤解,還是簡單說一下吧,其中若有不嚴謹之處歡迎指正。

模擬出現這樣的結果,是系統的熵在無序條件下趨向最大化的結果。不少人的答案已經都提到了這一點,比如 @KetoneHu 的回答。

在這個模擬中,我們已知的確定條件是,1)每個樣本的取值在0到正無窮之間,2)整個系統的均值是固定的。在其它條件完全隨機的情形下,即完全隨機的互相轉移收入,系統的分布會趨向於最大熵分布,在上述兩個限定條件下的最大熵分布就是:指數分布。可參看英文wiki Maximum entropy probability distribution

在不同的限定條件下的最大熵分布也不同。比如,這個答案指出:https://www.zhihu.com/question/20807764/answer/16246796

最大熵的連續分布:

已知區間==&>均勻分布
已知均值(不知彼岸註:和取正值)==&>指數分布
已知均值和標準差(方差)==&>正態分布

再比如,這個答案冪律和最大熵是什麼關係? - 知乎指出:

冪律分布是在幾何平均值約束下熵最大的分布。

所以,究竟會出現什麼樣的分布,關鍵要看限定條件是什麼。

那麼,在資本主義制度下,現實的收入分布是怎麼樣的呢?

這篇論文 Dr?gulescu, Adrian, and Victor M. Yakovenko. "Exponential and power-law probability distributions of wealth and income in the United Kingdom and the United States." Physica A: Statistical Mechanics and its Applications 299.1 (2001): 213-221. 發現,對絕大多數人來說,他們的收入或財富分布符合指數分布,但是對於收入或財富特別多的少部分人來說,他們的收入或財富分布符合的是比指數分布更加不平等的冪律分布

考察一下,指數分布和冪律分布所對應的限定條件,該怎麼理解上述現象呢?

指數分布的限定條件,就是這個模擬的限定條件。這說明,對於絕大部分人來說,他們的收入就是在自己的內部相互打轉,在積累財富上誰也不能比誰獲得更多的系統性的優勢

然而,冪律分布的限定條件該怎麼理解呢?如果,我們剔除收入整體的增長率,將收入扣除其長期增長的趨勢,這樣進行一下標準化(剔除趨勢),那麼不難發現,冪律分布所需要的幾何平均值固定的約束,對應的就是收入或者財富的增長率固定,也就是說,財富或收入的多少不影響財富的增長率。比如,不存在因為財富過多,規模報酬遞減,而導致財富的增長率下降的現象。這樣一來,富人吸金的能力也隨著他的財富增多而同比例的增長了。這就必然地會出現富人更富,窮人更窮的現象,也就是出現冪律分布。(還可以參看 @Manolo 的這個https://www.zhihu.com/question/21128507/answer/180923392回答里介紹的這篇文章Benhabib, Jess, Alberto Bisin, and Shenghao Zhu. "The distribution of wealth and fiscal policy in economies with finitely lived agents." Econometrica 79.1 (2011): 123-157.)

收入或財富分布由兩個不同的部分組成這一事實,表明了資本主義社會存在兩個基本的階級結構。一個是主要依靠工資收入的勞動階級,他們的收入和財富分布主要服從於指數分布。一個是主要依靠資本收入的資產階級,他們的收入和財富分布主要服從於冪律分布。(還可以參看這篇文章勞動價值論與邊際效用論:哪一個是科學的經濟理論?-少年中國評論,裡面有幾段引用了若干篇文獻,也同樣發現了指數分布和冪律分布並存的事實。)

所以,千萬不要以為你在這個模擬中看到的指數分散式的不平等對應的已經是現實收入的不平等了。因為冪律分布的貢獻,現實收入的不平等,比你看到的指數分散式的不平等還要大,財富收入的不平等就更加如此了。


這個分布和最大熵有沒有關係?剛才我看到這個問題的模擬結果,雜亂無章的數值讓我感覺初始狀態怕是這個系統熵最小的情況,而後的演化也許造成熵增,所以可能收斂到最大熵。

有學物理的說這個是波爾茲曼分布?我沒學過,能詳細講講嗎?


先把這個問題說得更準確一點,可以問的問題有:

1.每個人獲得錢數的期望值是多少?

2.所有人的錢數作為一個向量,分布是什麼樣的?

3.所有人的錢數按照大小排序,最概然的分布是什麼樣的?

題主的直覺源於第一個問題的答案:每個人獲得錢數的期望值顯然等於初始值。

題主的問題讀起來像是在問第二個問題,但是題主的程序卻是在回答第三個問題。(也只是部分回答)

下面我就以解答第三個問題為目標了。

如果回答了第二個問題,第三個問題也能夠很容易的回答。

但問題在於:對於兩個參數(人數和錢數)都不夠大的時候,第二個問題估計沒有解析的結果,錢數向量也不會被某些最概然的狀態所統治。這時問題就變成了一個計算題,而不是數學題。

@Yivan 的答案中給出了(人,錢)=(2,2)時候的答案。

很容易把它推廣到(2,n)情形,這時候解是(1,2,2,...,2,1)/(4 n),不存在一些處於統治狀態的最概然分布。

(未完)


關鍵是理解方差累積的方式。在日常生活中,我們總是習慣於均值(期望)和方差都不為0的隨機變數的累積,這種情況下通常均值累積速度最終會超過方差累積,體現出大數定律的效果:平均值的誤差變小。許多人就誤以為所有的累積都會越累積越平均。這是不正確的,比如這個例子中,均值為0,那麼就只有方差累積了下來,累積的結果波動會越來越大,在中心極限定理的作用下呈現出一個正態分布。再加上排序的效果,最後的結果實際上就接近於若干個獨立同分布的正態分布隨機變數排序的結果,只所以沒有顯示出很明顯的尾巴也向下掉的效果是因為沒有錢的人不會繼續負債。雖然這100個人實際上有內在約束(總錢數不變),但因為人數比較多,最後的結果和獨立同分布還是比較接近的。


這個問題本身的演變也很有意思,是一個多方重複造輪的過程:

最早7月10日 @園長 一篇專欄文章介紹了這個問題,來源是 Decision Science News,Counterintuitive problem: Everyone in a room keeps giving dollars to random others. You#x27;ll never guess what happens next. - Decision Science News

在這篇6月21日的文章中給出了R的模擬代碼,其實在gist上可以找到,https://gist.github.com/dggoldst/e77cacae87a9b88de52f7868936899c5#file-give_a_dollar-r ,同時有人fork後加入了考慮借貸關係的模擬,kushymittal/Economic-Simulation

其實 Decision Science News 上那篇文章後續給出了一篇6月27日的博文When random people give money to random other people 跟一篇2000年的論文http://physics.umd.edu/~yakovenk/papers/EPJB-17-723-2000.pdf

在這篇2000年的論文中,你會發現知乎前面答案里提到的問題基本都有覆蓋,例如冪律分布、玻爾茲曼-吉布斯分布、借貸關係、稅收補貼、計算模擬、熱力學等內容,該文從決策角度將這個問題抽象成物理上的力學平衡問題,討論了符合分布跟打破條件限制下該問題的模擬求解,但在結論中提到統計模擬方法在更大尺度上可能更靠譜,也提到了個體財富變化跟整體財富分配並不是一回事,是一個動態過程。

前面多數答主顯然並未參考這篇論文,站在自己的知識背景下對問題展開了討論,有些跟前人不謀而合,有些則並未達到前人的思考深度,有些則提出了更新穎的視角。

不過,這篇文章發表以來被引用了615次(谷歌學術),比較有影響力的是論文作者之一的Victor M. Yakovenko 2009年在 Rev. Mod. Phys. 上的這篇綜述:Colloquium

在這篇論文里基本延續了這個分布過程是符合玻爾茲曼-吉布斯分布的,也就是指數分布,但經驗數據卻發現底層人民與上層人民的分布是不同的,底層人民的財富分布更符合指數分布,但相對靜態不隨時間變化,上層人民的財富分配符合冪律分布,高度動態變化並非處於穩定狀態。

其實這類研究大都從物理學的動力學視角來解釋社會現象,具體是一個動態交換模型,屬於複雜性科學的研究範圍。我找到一個很有意思的研究,用比特幣的交易數據研究了財富分配,這讓我感到區塊鏈技術簡直就是做財富分配研究的科研人員的福音,因為通過錢包地址與交易鏈可以很好的追蹤分配過程。並且由於挖礦的存在,財富總值目前是增加的,這個模型基本可以看成現實世界經濟行為的某種縮影,這篇論文中提到 sublinear preferential attachment 主導了比特幣的財富分配過程,網路連接度越高,整體財富越高(有點旁氏拉下線的意思),也就是說真實世界經濟全球化更有利於整體財富增加,但停滯的話就容易出現危機(這是我YY的,不要當真)。原文OA在這裡:Do the Rich Get Richer? An Empirical Analysis of the Bitcoin Transaction Network

拋開問題本身,知乎上答案其實一直存在重邏輯推演輕文獻調研的風氣,過分拔高點就是當年歐洲大陸的唯理論與英國的經驗論的對比,掌握邏輯思考能力確實很容易看到問題本質,但站在別人肩膀上看風景可能更省力,也容易發現自己思考過程中的盲點。


這個問題的回答我做成了一個視頻傳到了B站上,當然大家也可以看下面的描述,兩者基本上等價。歡迎各路大神來討論。

編程模擬告訴你,均貧富是不可以!_趣味科普人文_科技_bilibili_嗶哩嗶哩

首先呢,我們需要討論一開始的情況。這個問題等價於把所有人的錢都扣去1塊,然後100塊錢的每塊錢都以0.01的概率隨機砸在每個人頭上。這裡我們允許錢往自己的頭上砸,和題目的要求有點區別,實際上在人數多的時候是沒有任何區別的,根據實驗比較是可以這麼近似的。

因此,我們可以對每個人都這樣想像:對於每個人,初始100塊錢,然後做100*M次獨立重複實驗,每次都有0.01的概率拿到1塊錢,然後給他扣掉M元錢,就是M輪過後這個人的錢數。這就變成了一個典型的二項分布的問題了。因為100*M的數字很大很大,這完全可以用中心極限定理來解釋。我們可以大膽的猜測,大家的錢數分布應該是一個高斯分布!

(有人可能會問:100個人有10000元錢本身就是限制,能當成獨立的個體嗎?我想說的是,人數足夠多,比如成百上千人的時候,是可以把每個人近似當成獨立的個體的,這樣誤差也很小。我的目的是要找到一個簡單化的解析解,能讓實驗數據落在合理的誤差範圍即可。)

然後,我做出理論值的推導。

我們用這種方法得到理論值,可以放到坐標軸去和實驗值相比較。(紅色曲線就是我做出的理論曲線)

大家可以看到,實驗值和理論值符合的很好。


然後如果一個人沒錢,該怎麼處理呢?我們有三種假說

1,當沒錢的人直接出局,則錢全部都流到兩個人手裡。

2,當沒錢的人不出局,仍然可以接受他人的錢,那麼就是一個典型的近玻爾茲曼分布。(並不是完全的玻爾茲曼分布,因為不是任意兩個人交換錢財,時間反演對稱性被破壞了,我們只能用近似,這裡可以參考 @趙永峰 的回答)

3,當沒錢的人不出局,允許負債的情況下, 那麼還是正態分布,只不過範圍擴大到負數而已。

第一種和第三種是顯而易見,知乎上其他人也都證明了這一點,我主要感興趣的是第二種。

第二種實際上是一個熵增大的過程,這裡我們把每個人看做是一個獨立的系綜,我們令其在各個錢數下的狀態是p(i),那麼通過約束條件,我們可以證明這個人的錢數分布是玻爾茲曼分布。證明過程我直接用公式。

這些結論我都是通過模擬和計算得出來的,理論和實驗符合的很好,要不然我也不會輕易的下結論。下面的圖的紅色的線就是我通過理論計算得出的精確值。

有人說,你怎麼知道你這個狀態是穩定的?萬一它還會繼續變化呢。那我明確告訴你,基尼係數可以衡量貧富差距,也可以檢驗我這個系統是否達到穩態。

什麼是基尼係數呢,它本來是定義收入不平衡的量的,但是我們這裡沒有收入,只有每個人的錢數,所以我們把每個人的錢數當成收入,調用這個辭彙。

我用維基百科的定義告訴你。設下圖中的實際收入分配曲線(紅線)和收入分配絕對平等線(綠線)之間的面積為A,和收入分配絕對不平等線(藍線)之間的面積為B,則表示收入與人口之間的比例的基尼係數為 A/(A+B)

如果A為零,即基尼係數為0,表示收入分配完全平等(紅線和綠線重疊);如果B為零,則係數為1,收入分配絕對不平等(紅線和藍線重疊)。該係數可在0和1之間取任何值。收入分配越趨向平等,勞倫茨曲線的弧度越小(斜度越傾向45度),基尼係數也越小;反之,收入分配越趨向不平等,勞倫茨曲線的弧度越大,那麼基尼係數也越大。

好了,定義了基尼係數以後,我程序里自然而然能算出蒙特卡洛抽樣過程中100個人基尼係數的變化。首先通過雙重積分,我們很容易得出當系統是玻爾茲曼分布的時候,基尼係數的理論值是0.5。我模擬了300萬步,實驗值如下:

通過蒙特卡洛計算,得出的實驗值是0.497±0.006,誤差不到1個errorbar。我們可以說,這個系統是近似玻爾茲曼分布的。

但是呢,這個曲線的震蕩比較劇烈,主要原因我在上面也提到過,他並不是任意兩個人進行交換,而是遵循一定的順序,是個不可逆的過程,時間反演對稱性被破壞,所以造成了一定程度的誤差。不過誤差影響不大。

最後,還是歡迎大家投幣支持我的作品,畢竟做了這麼多的功夫,花了很多時間為大家解答這個問題。

嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibiliw


「這不該用個離散馬爾可夫鏈求極限狀態么…」

第一反應是這個的我,真的是naive啊。

首先說明一下這個理論上可解的方法:這是一個離散時間馬爾科夫鏈(狀態變化與歷史記錄無關);總金額有限,所以是有限狀態空間;每個狀態點都有概率回到原狀態點(兩個人互相給錢之類的),狀態轉移矩陣的對角線不全為0,所以是非周期的;沒有吸收態(不存在沒錢就出局之類的規則),理論上所有狀態空間都是可以通達的,所以是既約的。因此,這是個遍歷(Ergodic)的問題,存在極限狀態的唯一解pi=pi P, pi e=1 , pi_i 為運行無限長時間,系統處在 i 狀態的概率)。

所以想求解這個問題,寫出狀態轉移矩陣 P 就可以了。這一步原則上也不複雜,每個人每次損失1元,剩下99人中,每人以1/99的概率給他1元錢,他獲得的錢應該是個幾何分布,概率也能寫出來。比如獲得0元的概率為 (1-1/99)^{99}=0.366,獲得1元的概率為 99	imes(1-1/99)^{98}	imes(1/99)=0.370 ,從這可以看出,經過一輪,變好的可能性 1-0.370-0.366=0.264 略低於變壞,最有可能是不變。

那麼為什麼,我沒有貼出最終結果然後坐等鮮花掌聲和點贊呢?因為這道題,狀態空間爆炸了啊……我問了 2個超級聰明的博士,他們也都有同樣的第一感覺。

其實本來不會鬧到這個地步的。如果允許負債,那麼狀態只需要考慮每個人的情況就可以了,因為其他人無論如何都會按照同樣的概率來給他錢,不會因為破產就不給錢了。需要注意的是,在這種情況下,狀態空間會變成無限,但由於有正常返的性質(未證明),依舊是遍歷的,因此還存在唯一解。直觀上看,求解結果應該是每個狀態的極限概率相等,這組解能滿足條件的,因此就是唯一解。

但是題目要求不允許負債,也就是狀態為0的人,只收錢,不需要往外拿錢。這並不是單純地把0狀態的轉移矩陣修改一下就可以,因為在每個人的每個狀態下,都要考慮到底有多少人有機會給錢,所以每個狀態點,不能只記錄個人的狀態,而是整個系統的狀態。這麼說吧,3個人每人3元錢,狀態可能有(0,0,9),(0,1,8)等55個。100個人100元錢,我只能攤手了。

那麼如果我就要強行計算呢?在這裡提供一個不成熟的思路吧。利用條件概率來求, pi=p_0^{100}	imes pi P+99*(1-p_0)	imes p_0^{99}	imes pi P 也就是分別列出0人破產,1人破產,...,99人破產時候的(個人)狀態轉移矩陣,以發生這件多人破產事件(每個人破產概率 pi_0 )的概率為權重,來計算出新的狀態轉移矩陣。如果有大神願意,不妨來證明一下是否可行。

綜上所述,用馬爾科夫鏈直接求解這個問題,似乎不太可行(畢竟我不是專門研究這個的)。


我只想說一句。。趨於平均的直覺對應

的情況是這樣的。

比如對於1號角色來說。

如果單個實驗時間重複150分鐘。他可能成富豪或者破產。

但是如果將這個整體的實驗重複1000次。他每次在150分鐘內的平均值應該是100。

就是

for 講這個實驗重複1000次

for 時間150分鐘

那麼1號角色在1000次 每次150分鐘的實驗下的期望是100


題目有個很重要的隱含條件沒講,但是寫在code的注釋里了:

#every player with wealth chooses another person to receive a buck

去掉這個條件,這件事就沒有任何有趣的地方了。


分頁阅读: 1 2