Very interesting. I'd like to see this simulation run with different (pseudo-)RNGs. I wonder if and how the quality of the randomness impacts the outcome.
I doubt the PRNG will have an effect, unless it's a bad one. For any individual, the flow out is fixed at 1 dollar per round, but the flow in is unbounded. This favors wealth accumulation. If five people happen to select the same donor target, that person will take five rounds to get rid of that money, during which time they are likely to receive more.
Meanwhile if someone only has one dollar, they lose their entire wealth if no one targets them immediately. Only large amounts have staying power.
There is a second-order effect that as money becomes more concentrated there are less donations per round. If one person has five dollars, four dollars are not being donated. This makes being targeted for multiple donations less likely as time goes on.
If you run this for very long time frames everyone should end up both broke and wealthy. It's basically just several bounded random walks which will diverge in both directions and then flip around.
And really this is just another case where random does not seem random to us.
I want to believe that this is true because there are no absorbing states, but it could be false. Let's not forget Pólya's theorem: random walks on integer lattices are recurrent at dimension 1 and 2 (always come back to the origin) and transient in any higher dimension (eventually never come back).
But the number of states for the wealth distribution problem isn't infinite, hm, because the total amount of money never changes. Yeah, I think I just convinced myself that you may be right, no state is absorbent so they must all be positive recurrent.
Maybe that's how we can restore our intuition on this problem. Everyone should be wealthy and poor, but it may take very long time to see the wealth flip around. While we wait for that to happen, we'll see gross wealth inequality.
The finite states argument feels kind of wrong. You're usually interested in the general behavior for n people, and the number of states is exponential in n, which means that you need time exponential in n to repeat yourself. What you're seeing here is the early behavior of the system. Your arguments is a bit like saying every computer is actually a finite state machine, because of the finite memory it's going to repeat itself eventually. The argument is fundamentally flawed because you inflated one part of the question (time of running the question) while keeping the more significant part (number of particiants) fixed.
It favors wealth accumulation, but the winner isn't locked in because eventually any person will lose all they have if they don't get any income for a long stretch.
I wouldn't expect it to make a detectable difference, unless the rng was as low quality as the one featured in Dilbert [0]
The simulation has to make 100 decisions every turn, sometimes slightly fewer. A typical way to do this is to get 100 32-bit numbers from the RNG, even though you really need fewer bits of entropy than that. If the RNG had cycles of exactly 100, or a factor of 100, that could cause a feedback loop here. But a typical PRNG, even a simple one, has a period length of billions.
I hoped to hear a positive response. At the same time, I was trying to impart a lesson that it took young-engineer-me a lot of time to really grasp, which is that you can trust PRNGs and randomness as engineering building blocks (and reciprocal-2-to-the-power-of-a-lot events are unintuitively rare).
On the first:
PRNGs work because they are not random in ways that are very weakly correlated with things you might want to simulate, but there are cases where you do get correlation, and I'm not really sure what those cases are, and read some technical explanations but nothing intuitive enough to be able to look at a real world scenario like this and intuitively grasp that here is one of those rare situations where an LCG is not enough but a Mersenne Twister is, or harder - a Mersenne Twister is not enough but real random data sampled from some physical system and normalized by XORing to a Mersenne Twister is. If you're one of those people that have this skill, maybe you can explain it to me intuitively.
On the second:
The best example is trusting cryptographic hashes. When I was young I saw systems that use a file's hash as that file's unique identifier, that were built on the completely unflexible assumption that there will never, ever be a collision, because that would completely bork the system. I had a bad feeling whenever I saw this assumption being made, because, I mean, yeah, hashes have many bits, but can't it happen even once, somewhere around the world, that two files would be found that have the same hash? There are still so many more files than hashes...
And the answer is no. It can't. Oncce a decade or so your hash algorithm will be successfully broken and you'll need to replace it with a stronger one, but it probably never happened in the entire history of humanity and never will that two files were created that have the same cryptographic hash by coincidence. It's completely reasonable to make this assumption. Just as it is completely reasonable to use a long number as an authentication token, etc' etc'.
We humans simply don't have a mechanism in our brain for representing "a nonzero chance that might happen but is so small that it is inconceivable that it would ever happen even once in the history of the world". So we see "possible" and feel deep in our bones "might happen". And we're worse engineers for it.
Well, yes, and as your sibling commenters contributed useful and insightful replies it indicates the question is interesting enough, at least to them, to be worth contributing thought to.
If you're really just looking for an unsubtle way to point out there is some better term of art that isn't salient enough to me to presently recall, perhaps you might wish instead to helpfully point it out for my benefit and that of other readers.
Can anyone with insight offer comment?