Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from prettytable import PrettyTable | |
| import simulation as s | |
| from poker_functions import Card | |
| def run_simulation( | |
| hand: list[str], | |
| flop: list[str] = None, | |
| turn: list[str] = None, | |
| river: list[str] = None, | |
| sims=10000, | |
| ) -> None: | |
| sim = s.simulation_one_player(hand, flop, turn, river, sims=sims) | |
| hc_pct = s.percent(sim[1], sim[0]) | |
| hc_ratio = s.ratio(sim[1], sim[0]) | |
| pair_pct = s.percent(sim[2], sim[0]) | |
| pair_ratio = s.ratio(sim[2], sim[0]) | |
| two_pair_pct = s.percent(sim[3], sim[0]) | |
| two_pair_ratio = s.ratio(sim[3], sim[0]) | |
| three_ok_pct = s.percent(sim[4], sim[0]) | |
| three_ok_ratio = s.ratio(sim[4], sim[0]) | |
| straight_pct = s.percent(sim[5], sim[0]) | |
| straight_ratio = s.ratio(sim[5], sim[0]) | |
| flush_pct = s.percent(sim[6], sim[0]) | |
| flush_ratio = s.ratio(sim[6], sim[0]) | |
| boat_pct = s.percent(sim[7], sim[0]) | |
| boat_ratio = s.ratio(sim[7], sim[0]) | |
| quads_pct = s.percent(sim[8], sim[0]) | |
| quads_ratio = s.ratio(sim[8], sim[0]) | |
| strt_flush_pct = s.percent(sim[9], sim[0]) | |
| strt_flush_ratio = s.ratio(sim[9], sim[0]) | |
| hole_card_str = f"{Card(hand[0]).pretty_name} {Card(hand[1]).pretty_name}" | |
| table = PrettyTable() | |
| table.field_names = ["Your Hand", "Board"] | |
| if flop is None: | |
| flop = [] | |
| if turn is None: | |
| turn = [] | |
| if river is None: | |
| river = [] | |
| board_str = "".join(f"{Card(card).pretty_name} " for card in (flop + turn + river)) | |
| table.add_row([hole_card_str, board_str]) | |
| odds = PrettyTable() | |
| odds.add_column( | |
| "Best Final Hand", | |
| [ | |
| "High Card", | |
| "Pair", | |
| "Two Pair", | |
| "Three of a Kind", | |
| "Straight", | |
| "Flush", | |
| "Full House", | |
| "Four of a Kind", | |
| "Straight Flush", | |
| ], | |
| ) | |
| odds.add_column( | |
| "% Prob", | |
| [ | |
| hc_pct, | |
| pair_pct, | |
| two_pair_pct, | |
| three_ok_pct, | |
| straight_pct, | |
| flush_pct, | |
| boat_pct, | |
| quads_pct, | |
| strt_flush_pct, | |
| ], | |
| ) | |
| odds.add_column( | |
| "Odds", | |
| [ | |
| hc_ratio, | |
| pair_ratio, | |
| two_pair_ratio, | |
| three_ok_ratio, | |
| straight_ratio, | |
| flush_ratio, | |
| boat_ratio, | |
| quads_ratio, | |
| strt_flush_ratio, | |
| ], | |
| ) | |
| st.divider() | |
| st.subheader("Odds") | |
| st.write(table, "\n") | |
| st.write(f"We ran your hand {sims} times. Here's the odds:\n") | |
| st.write(odds, "\n") | |
| st.divider() | |
| if __name__ == "__main__": | |
| run_simulation(["As", "Ah"], ["2s", "3s", "4s"], sims=4000) | |