This function generates random head to head schedules for a given number of seasons, teams, and weeks.

ffs_build_schedules(
  n_teams = NULL,
  n_seasons = 100,
  n_weeks = 14,
  franchises = NULL,
  seed = NULL
)

Arguments

n_teams

number of teams in simulation

n_seasons

number of seasons to simulate, default = 100

n_weeks

number of weeks per season, default = 14

franchises

optional: a dataframe of franchises as created by ffs_franchises() - overrides the n_teams argument and will attach actual franchise IDs to the schedule output.

seed

an integer to control reproducibility

Value

a dataframe of schedules

Details

It starts with the circle method for round robin scheduling, grows or shrinks the schedule to match the required number of weeks, and then shuffles both the order that teams are assigned in and the order that weeks are generated. This doesn't "guarantee" unique schedules, but there are n_teams! x n_weeks! permutations of the schedule so it's very very likely that the schedules are unique (3x10^18 possible schedules for a 12 team league playing 13 weeks).

See also

vignette("custom") for example usage

Examples

# \donttest{ ffs_build_schedules(n_teams = 12, n_seasons = 1, n_weeks = 14)
#> # A tidytable: 168 × 4 #> season week franchise_id opponent_id #> <int> <int> <int> <int> #> 1 1 8 12 6 #> 2 1 8 9 11 #> 3 1 8 3 2 #> 4 1 8 10 1 #> 5 1 8 4 7 #> 6 1 8 5 8 #> 7 1 8 8 5 #> 8 1 8 7 4 #> 9 1 8 1 10 #> 10 1 8 2 3 #> # … with 158 more rows
# }