some notes
This commit is contained in:
parent
8f7cb2c2d2
commit
dff8ce9131
26
roulette.py
26
roulette.py
@ -1,17 +1,23 @@
|
|||||||
from typing import List, Dict, Optional
|
from typing import List, Dict, Optional
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
|
from random import choice, randint
|
||||||
|
|
||||||
|
|
||||||
Bet = Dict[int, float]
|
Bet = Dict[int, float]
|
||||||
|
|
||||||
|
SINGLE_BETS = {str(i) for i in range(-1, 37)}
|
||||||
|
|
||||||
FEASIBLE_MOVES = sorted({
|
FEASIBLE_MOVES = sorted({
|
||||||
*[f"street-{i}" for i in range(1,14)],
|
*[f"street-{i}" for i in range(1,14)],
|
||||||
*[f"col-{i}" for i in range(1,4)],
|
*[f"col-{i}" for i in range(1,4)],
|
||||||
*[f"corner-{i}-{i+1}-{i+3}-{i+4}" for i in range(1,33) if (i - 1)%3 < 2],
|
*[f"corner-{i}-{i+1}-{i+3}-{i+4}" for i in range(1,33) if (i - 1)%3 < 2],
|
||||||
*["1-12", "13-24", "25-36", "1-18", "19-36", "even", "odd", "red", "black"],
|
*["1-12", "13-24", "25-36", "1-18", "19-36", "even", "odd", "red", "black"],
|
||||||
*["triple-0", "triple-00"]
|
*["triple-0", "triple-00"],
|
||||||
|
*SINGLE_BETS
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
ALIASES = {"reds", "blacks", "evens", "odds", "first-half", "last-half", "second-half", "first-18", "last-18", "second-18"}
|
ALIASES = {"reds", "blacks", "evens", "odds", "first-half", "last-half", "second-half", "first-18", "last-18", "second-18"}
|
||||||
|
|
||||||
CHIP_VALUES = { 0.25, 0.5, 1, 5, 10, 25, 50, 100}
|
CHIP_VALUES = { 0.25, 0.5, 1, 5, 10, 25, 50, 100}
|
||||||
@ -93,7 +99,11 @@ def interpret_bet(on="red", amount=0, bet=Optional[Bet]):
|
|||||||
NUMS = {num_1, num_2, num_3, num_4}
|
NUMS = {num_1, num_2, num_3, num_4}
|
||||||
div = 4
|
div = 4
|
||||||
else:
|
else:
|
||||||
raise ValueError("unsupported bet")
|
try:
|
||||||
|
NUMS = {int(on)}
|
||||||
|
div = 1
|
||||||
|
except ValueError as e:
|
||||||
|
raise e(f"Bet `{on}` not understood. Choose from feasible moves:\n {set(range(-1, 37))}")
|
||||||
|
|
||||||
bet = reduce(lambda bet, num: place_bet(bet, num, amount / div), NUMS, bet)
|
bet = reduce(lambda bet, num: place_bet(bet, num, amount / div), NUMS, bet)
|
||||||
|
|
||||||
@ -143,7 +153,7 @@ def place_bets(placements):
|
|||||||
return reduce(lambda bet, placement: combine_bets(bet, placement.place_bet()), placements, {})
|
return reduce(lambda bet, placement: combine_bets(bet, placement.place_bet()), placements, {})
|
||||||
|
|
||||||
# create a list of random Placements
|
# create a list of random Placements
|
||||||
from random import choice, randint
|
|
||||||
placements = [Placement(randint(1, 10), 1, choice(list(FEASIBLE_MOVES))) for _ in range(10)]
|
placements = [Placement(randint(1, 10), 1, choice(list(FEASIBLE_MOVES))) for _ in range(10)]
|
||||||
|
|
||||||
|
|
||||||
@ -172,7 +182,12 @@ class Strategy:
|
|||||||
# guarantees the max bet cannot exceed budget:
|
# guarantees the max bet cannot exceed budget:
|
||||||
num = randint(1, budget // amt)
|
num = randint(1, budget // amt)
|
||||||
# select random bet type
|
# select random bet type
|
||||||
on = choice(list(FEASIBLE_MOVES))
|
# todo: consider if this is the logic you want...
|
||||||
|
if randint(0, 1) == 0:
|
||||||
|
on = choice(list(FEASIBLE_MOVES))
|
||||||
|
else:
|
||||||
|
on = choice(list(SINGLE_BETS))
|
||||||
|
on = choice(list(FEASIBLE_MOVES)) # todo: make a parameter, allow for just single bets.
|
||||||
placement = Placement(num, amt, on)
|
placement = Placement(num, amt, on)
|
||||||
placements.append(placement)
|
placements.append(placement)
|
||||||
budget -= placement.value
|
budget -= placement.value
|
||||||
@ -265,9 +280,10 @@ def simulate_games(
|
|||||||
|
|
||||||
return players + losers
|
return players + losers
|
||||||
|
|
||||||
|
import ast
|
||||||
# generate players and print them out
|
# generate players and print them out
|
||||||
players = generate_players(num_players=3, min_num_games=4, total_budget=200)
|
players = generate_players(num_players=3, min_num_games=4, total_budget=200)
|
||||||
|
players[0] = Player(budget=200.0, strategy=Strategy(budget=50, placements=[Placement(num=2, amt=5, on='triple-00'), Placement(num=1, amt=10, on='col-1'), Placement(num=60, amt=0.25, on='corner-23-24-26-27'), Placement(num=10, amt=1, on='14'), Placement(num=1, amt=5, on='street-2')]))
|
||||||
for p in players:
|
for p in players:
|
||||||
print(p,'\n')
|
print(p,'\n')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user