为何公平随机过程会产生不公平结果?财富分布模拟疑问
这个问题我刚接触的时候也大跌眼镜——明明每一步都是随机公平的,怎么最后就变成少数人握有大部分财富了!咱们把这事掰碎了说:
核心原因是这个过程看起来公平,但本质是带吸收壁的有偏随机游走,而且规则里藏着关键的不对称性:
微小差异会被持续放大
哪怕初始状态完全一致,第一次随机选人的瞬间,就会有人先多拿1美元、有人先少1美元。这个看似可以忽略的差距,会随着时间滚雪球:有钱的人,能参与「给钱」操作的次数更多(毕竟只有有钱才能给钱),而每一次操作都有概率让他的财富继续增加;反过来,钱少的人,能参与操作的机会越来越少,甚至跌到0之后,就只能被动等别人随机选中他当收款方——这个概率低得可怜,自然很难翻身。「没钱就不操作」是致命的不对称规则
如果把规则改成「不管A有没有钱,都强制转1美元(允许负数)」,那结果真的会是均匀分布。但现在的规则给财富加了一个「0的吸收壁」:一旦某人没钱,他就失去了主动影响财富流动的能力,相当于被踢出了“主动游戏”,只能当观众偶尔捡个漏。而有钱的人一直在游戏里,自然会持续积累优势。最终是典型的幂律(帕累托)分布
多次模拟后你会发现,少数人能积累到几百美元,而大部分人只有几十甚至0美元——这就是现实中常见的「二八定律」对应的分布。这种分布的本质,就是「资源越多,获得更多资源的机会越大」的正反馈机制。
你可以跑一段简单的Python代码看看效果:
import random # 初始化100人,每人100美元 wealth = [100] * 100 # 执行100万次操作 total_steps = 1000000 for _ in range(total_steps): giver = random.randint(0, 99) receiver = random.randint(0, 99) # 避免自己给自己转,且给钱的人要有钱 if giver != receiver and wealth[giver] > 0: wealth[giver] -= 1 wealth[receiver] += 1 # 排序后看贫富差距 wealth.sort(reverse=True) print("Top 5的财富值:", wealth[:5]) print("Bottom 5的财富值:", wealth[-5:])
跑几次你会发现,Top的人能摸到200+,Bottom里大概率有0。
这里的「公平」只是单次操作的公平——每次选人和给钱的规则都是随机无偏的。但从系统长期运行的角度看,规则默认了「富者拥有更多的行动权」,这就形成了累积的不公平。打个通俗的比方:
就像两个人抛硬币,赢的人可以继续抛,输的人暂时不能抛。一开始大家机会均等,但只要有人先赢一次,他就有更多抛硬币的机会,赢的概率自然更高,差距只会越拉越大。
内容的提问来源于stack exchange,提问作者ShenLei

