貧富の差をシミュレーションする(Python)
最初、N人が1ずつのお金をもっている。
N人の中からランダムな提供者と受領者を選び、提供者から受領者にお金を1渡す。ただし、この時提供者のお金が0の場合、何も行われない。
やりとりを十分繰り返した場合、どのような結果が得られるか。
N=1000, やりとりを10000としてシミュレートする。
import random
import matplotlib.pyplot as plt
N = 1000
poc = [1 for i in range(N)]
gen = 10000
for i in range(gen):
rand = random.sample(range(N),2)
if poc[rand[0]] == 0:
continue
poc[rand[0]] -= 1
poc[rand[1]] += 1
poc = sorted(poc,reverse=True)
# X軸のデータ(インデックス)
x_data = range(len(poc))
plt.figure(figsize=(10, 6))
plt.plot(x_data, poc, marker='o')
plt.title("poc Values in Descending Order")
plt.xlabel("Index")
plt.ylabel("poc Value")
plt.grid(True)
plt.show()
今回の結果は、1人が14個ものお金を持ち、対して0個となったのは483人であった。
全員が平等な状態であったのに、ランダムなやり取りを繰り返しただけで不平等が生まれてしまった。