Here’s some Python that calculates how many players will reach each record in a Swiss tournament with a Top 8 or similar cut.
from typing import Sequence # Math from https://www.mtgsalvation.com/forums/magic-fundamentals/magic-general/325775-making-the-cut-in-swiss-tournaments def swisscalc(num_players: int, num_rounds: int, num_elimination_rounds: int) -> Sequence[int]: num_players_in_elimination_rounds = 2 ** num_elimination_rounds base = num_players / (2 ** num_rounds) num_players_by_losses = [0] * (num_rounds + 1) multiplier = 1.0 total_so_far = 0 record_required = None for losses in range(0, num_rounds + 1): wins = num_rounds - losses numerator = wins + 1 denominator = losses if denominator > 0: multiplier *= (numerator / denominator) num_players_by_losses[losses] = base * multiplier if not record_required and num_players_in_elimination_rounds: total_so_far += num_players_by_losses[losses] return num_players_by_losses
Example usage:
$ python3 >>> rounds = 4 >>> r = swisscalc(24, rounds, 3) >>> for losses in range(len(r)): ... print(f'{r[losses]} players at {rounds - losses}–{losses}') ... 1.5 players at 4–0 6.0 players at 3–1 9.0 players at 2–2 6.0 players at 1–3 1.5 players at 0–4