Note: winnings are re-invested, each player starts with $100 and chooses a strategy at random.
packages = [
"pyroulette",
]
import pyroulette as pr
# seed(59)
from random import random, randint
players = []
# iterations * num_per_group = num_players
for _ in range(1, 50):
c = random()
if c < 0.25:
min_games = randint(1, 100)
elif c < 0.5:
min_games = randint(1, 25)
else: # bold half
min_games = randint(1, 2)
# min_games = 100 # this caps out at about $250 wallet. need to bet bigger to win bigger.
players.extend(pr.generate_players(num_players=10, min_num_games=min_games, total_budget=100))
players = pr.play_roulette(players, games=100)
# get the wallet values for all players as a list
wallets = [player.wallet for player in players]
# calculate some statistics
avg_wallet = sum(wallets) / len(wallets)
median_wallet = sorted(wallets)[len(wallets) // 2]
# calculate winnings
winnings = [p.wallet - p.budget for p in players]
num_losers = len([w for w in winnings if w <= 0])
num_winners = len([w for w in winnings if w > 0])
num_bankrupt = len([l for l in wallets if l == 0])
# print the results
print(f"Average wallet value: {avg_wallet}\n")
print(f"Median wallet value: {median_wallet}\n")
print(f"Number of players who lost money: {num_losers}, proportion: {num_losers / len(players):.2f}")
print(f"Number of players who went bankrupt: {num_bankrupt}, proportion: {num_bankrupt / len(players):.2f}")
print()
print(f"Number of players who won more than they started with: {num_winners}, proportion: {num_winners / len(players):.2f}")
for p in sorted(players, reverse=True):
print("\n ", p)