Логика
Теперь реализуем внутреннюю логику. Нужно будет при каждом нажатии на кнопку в форме генерировать датафрейм с результатами ставок.
Начнём с импорта нужных модулей.
from dataclasses import dataclass
from random import random
import pandas as pd
Так как нужно будет генерировать N наборов данных, построенных по одинаковому принципу, то упакуем начальные «настройки» в класс, и будем использовать их при вызове методов.
@dataclass
class Simulator:
start_bankroll: int
winrate: float
winning_amount: int
losing_amount: int
def simulate_bets(self, n: int) -> list[int]:
bankroll = self.start_bankroll
history = []
for i in range(n):
if random() <= self.winrate:
bankroll += self.winning_amount
else:
bankroll -= self.losing_amount
history.append(bankroll)
return history
def make_dataframe(self, n: int, players_number: int) -> pd.DataFrame:
raw_data = {}
for i in range(players_number):
player = f'Игрок #{i + 1}'
raw_data[player] = self.simulate_bets(n)
return pd.DataFrame(raw_data)