[«Rassemblez 100 personnes dans une pièce et continuez à donner de l'argent à un partenaire aléatoire» fera progressivement la différence entre riches et pauvres](http://gigazine.net/news/20170711-random-people-give-money-to- Il existe un article de Gigazine intitulé random-other-people /).
Je pense qu'il y a différentes impressions telles que "Oh, c'est vrai" et "Oh, j'ai été surpris", mais comme c'est une expérience simple, j'ai essayé de changer diverses conditions et c'était étonnamment intéressant, alors je vais vous la présenter.
J'ai senti qu'il y avait peu de personnes avec 100 personnes, donc je vais essayer avec 1000 personnes.
Les histogrammes du montant d'argent et du nombre de personnes aux tours 10, 100, 1000 et 10000 sont les suivants.
Fondamentalement, cela ressemble à une distribution normale centrée sur 1000. Vous pouvez voir que la base se développe au fur et à mesure que l'essai est répété.
Lorsque vous donnez à une personne plus riche que vous-même, il y a 10% de chances de redécider à qui donner.
Il a une distribution similaire, mais a une base plus étroite qu'auparavant. Est-il prudent de dire que la richesse est redistribuée?
Au contraire, lorsque vous donnez à une personne plus pauvre que vous-même, il y a 10% de chances de redécider à qui donner.
Cette fois, au contraire, la base s'est considérablement agrandie. C'est une société disparité w Est-ce un microcosme d'une société qui ne demande pas aux pauvres de travailler?
Cette fois, il n'y a pas de conditions particulières pour donner de l'argent comme le tout premier, mais lorsque la première possession est de 50.
Le nombre de personnes dont l'argent devient 0 augmente, et ceux qui n'en ont pas ne le donnent à personne, il semble donc assez biaisé.
C'est le script que j'ai utilisé cette fois. Vous pouvez l'exécuter sur votre bloc-notes Jupyter.
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
N = 1000 #Nombre de personnes
M = 1000 #Première possession
P = 0 #Probabilité de repenser lors de la remise aux riches / pauvres.Sinon 0,1%Puis 0.1。
plot_index = [10, 100, 1000, 10000] #Tournez le nombre pour afficher le graphique
T = max(plot_index)
plt.figure(figsize=(24, 6))
def transfer_money(moneys):
transfer = np.zeros_like(moneys)
for i in range(N):
if moneys[i] > 0:
while True:
to_money = np.random.randint(0, N)
#Si vous ne le donnez pas aux riches: `moneys[to_money] > moneys[i]`
#Si vous ne le donnez pas aux pauvres: `moneys[to_money] < moneys[i]`
if moneys[to_money] < moneys[i] and np.random.random() < P:
continue
break
transfer[i] -= 1
transfer[to_money] += 1
moneys += transfer
moneys = np.ones((N, )) * M
for i in range(T+1):
if i in plot_index:
plt.subplot(1, len(plot_index), plot_index.index(i)+1)
ax = sns.distplot(moneys, kde=False, bins=20)
ax.set_title("i=%d" % i)
ax.set_xlabel("money")
ax.set_ylabel("person count")
transfer_money(moneys)
plt.show()
Ce genre de chose est amusant.
Recommended Posts