Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Imagine a room full of 100 people with 100 dollars each. With every tick of the clock, every person with money gives a dollar to one randomly chosen other person. After some time progresses, how will the money be distributed?
// paste me into console to explore the counterintuitive problem found here:
// http://www.decisionsciencenews.com/2017/06/19/counterintuitive-problem-everyone-room-keeps-giving-dollars-random-others-youll-never-guess-happens-next/
// setup: tweak as needed
var rounds = 10, turns = 1000, max = 100, start = 100;
// play one round
var round = function () {
// setup
var a = [];
// everybody gets the same number of things to start
for (var i = 0; i < max; i = i + 1) {
a.push(start);
}
// everybody who has at least one thing: give one to somebody else
var turn = function () {
for (var i = 0; i < max; i = i + 1) {
if (a[i]) {
a[i] = a[i] - 1;
var r = Math.floor(Math.random() * max);
a[r]++;
}
}
};
// run some turns
for (var t = 0; t < turns; t = t + 1) {
turn();
}
// sort so it's easy to spot highs and lows
a.sort(function (a, b) {
return b - a;
});
//return results
return a;
};
// play some rounds and log them to console
for (var i = 0; i < rounds; i = i + 1) {
console.log(round());
}
@jones1618

This comment has been minimized.

Copy link

commented Jul 9, 2017

Nice. I copied this into a JSFiddle so people could play with it without opening a console.
https://jsfiddle.net/jones1618/n5w5nyo6/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.