import random
def simulate_betting_round(balance_a, balance_b, corridor_stats):
"""Имитирует один раунд ставок на футбольный матч."""
total_goals = random.randint(0, 7) # Полный рандомайзер: случайное количество голов от 0 до 7
corridor_occurred = False
# Первоначальные ставки
balance_a -= 10
if total_goals > 2.5:
balance_a += 10 * 1.6
else:
balance_a += 0
balance_b -= 8 # Измененная сумма ставки
if total_goals < 2.5:
balance_b += 8 * 2.2 # Измененный коэффициент
else:
balance_b += 0
# Мелкие ставки на коридор
balance_b -= 1 # ТБ 2.5 кэф 1.6
win_tb_2_5 = False
if total_goals > 2.5:
balance_b += 1 * 1.6
win_tb_2_5 = True
balance_b -= 1 # ТМ 3.5 кэф 1.6
win_tm_3_5 = False
if total_goals < 3.5:
balance_b += 1 * 1.6
win_tm_3_5 = True
if win_tb_2_5 and win_tm_3_5:
corridor_occurred = True
corridor_stats["2.5 Больше и 3.5 Меньше"] += 1
# Условные ставки
if total_goals > 2.5:
balance_a -= 10
if total_goals < 3.5:
balance_a += 10 * 1.9
else:
balance_a += 0
balance_b -= 10
if total_goals > 3.5:
balance_b += 10 * 1.9
else:
balance_b += 0
return balance_a, balance_b, corridor_stats, corridor_occurred
def run_simulation(num_simulations=1000):
"""Запускает серию симуляций стратегии ставок."""
initial_balance = 1000
total_bets_list = []
final_balance_a_list = []
final_balance_b_list = []
lost_percentage_list = []
corridor_stats = {"2.5 Больше и 3.5 Меньше": 0}
balance_transfer_count = 0
for _ in range(num_simulations):
balance_a = initial_balance
balance_b = initial_balance
total_bets = 0
game_over = False
while balance_a > 0 and balance_b > 0 and not game_over:
old_balance_a = balance_a
old_balance_b = balance_b
balance_a, balance_b, corridor_stats, corridor_occurred = simulate_betting_round(balance_a, balance_b, corridor_stats)
total_bets += 4 # Первоначальные ставки и мелкие ставки
# Проверяем условие для дополнительных ставок (имитация total_goals > 2.5)
if random.randint(0, 7) > 2:
total_bets += 2 # Дополнительные ставки
if old_balance_a > 0 and balance_a <= 0:
balance_transfer_count += 1
game_over = True
elif old_balance_b > 0 and balance_b <= 0:
balance_transfer_count += 1
game_over = True
final_total_balance = balance_a + balance_b
lost_percentage = ((initial_balance * 2 - final_total_balance) / (initial_balance * 2)) * 100 if (initial_balance * 2) > 0 else 0
total_bets_list.append(total_bets)
final_balance_a_list.append(balance_a)
final_balance_b_list.append(balance_b)
lost_percentage_list.append(lost_percentage)
avg_total_bets = sum(total_bets_list) / num_simulations
avg_final_balance_a = sum(final_balance_a_list) / num_simulations
avg_final_balance_b = sum(final_balance_b_list) / num_simulations
avg_lost_percentage = sum(lost_percentage_list) / num_simulations
print("\n--- Статистика после {} симуляций ---".format(num_simulations))
print(f"Среднее количество сделанных ставок: {avg_total_bets:.2f}")
print(f"Средний процент потерянного баланса: {avg_lost_percentage:.2f}%")
print(f"Средний конечный баланс букмекера А: {avg_final_balance_a:.2f}₽")
print(f"Средний конечный баланс букмекера Б: {avg_final_balance_b:.2f}₽")
print(f"Количество раз, когда баланс одного букмекера перетек к другому: {balance_transfer_count}")
print("\n--- Статистика по коридорам ---")
print(f"Количество срабатываний коридора (ТБ 2.5 и ТМ 3.5): {corridor_stats['2.5 Больше и 3.5 Меньше']}")
if __name__ == "__main__":
run_simulation(num_simulations=1000)