Let's Hack Roulette!

Simulating 100 Games for 500 Players

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)