A package for exploring roulette strategies.
Project description
pyroulette
Explanation
-
A
Player
has aStrategy
which is comprised of a list ofPlacements
, which represent a collectiveBet
. -
The player will stick to their strategy.
-
Winnings are re-invested (todo: allow specifying player's pyschology, e.g. pocket winnings of certain proportion)
-
A player's placement cannot be too complicated (max is 10)
-
A
Strategy
is formed at random based on exhausting the strategy budget, which is determined by considering the player's total budget and the minimum number of games they desire to play.- It is possible to have some money left over (either due to reaching the maximum number of placements or not having enough money to place a bet with the remaining available chips), meaning the strategy budget is less than the cost to play the strategy.
- When players cannot play their strategy anymore, they leave the game, meaning they can end the simulation with some remaining money (e.g.
$100
to play a$40
strategy that you lose twice in a row will leave you with$20
remaining).
-
When using
generate_players
, all players will have the same number of minimum games and budget.
how to use
pip install pyroulette
from pyroulette import generate_players, play_roulette
players = generate_players(
num_players=50,
min_num_games=min_games,
total_budget=100
)
players = play_roulette(
players=players,
games=1000,
)
print("Results:")
for p in sorted(players, reverse=True):
print("\n", p)
print("Statistics")
# 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}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyroulette-0.0.5.tar.gz
.
File metadata
- Download URL: pyroulette-0.0.5.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d296868b457bd343ae76db4efa8e2de8b8863249284f978b63a0a4220c9a2215 |
|
MD5 | 839d400257f69e41f97c431c1f128d05 |
|
BLAKE2b-256 | 52059eabb0ac6e826b44184f9869237b9868bd31c8ea6219d9b38f62c4ea37af |
File details
Details for the file pyroulette-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: pyroulette-0.0.5-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 343675dee42b0a81f0eedb85735dd18fb341aa4eca1bcdcf3234ed69198855f9 |
|
MD5 | 66ed67564cccfff3ec8fd57fe8e1382d |
|
BLAKE2b-256 | 847027c8eabeaf7c0679e0aebfd7952694bcc40f28776e133fedbb4232c5ac72 |