Since November 2023, the intent is for league cohort generation to be entirely randomized. However, currently, only the first cohort per division is properly randomized—the shuffled array is then ignored and the remaining cohorts are grabbed in the same original sorted order. This leads to large imbalances in league balance each season (some cohorts are mostly inactive users).
Users shuffled:
let remainingUserIds = shuffle(divisionUserIds.concat())
Since November 2023, the intent is for league cohort generation to be entirely randomized. However, currently, only the first cohort per division is properly randomized—the shuffled array is then ignored and the remaining cohorts are grabbed in the same original sorted order. This leads to large imbalances in league balance each season (some cohorts are mostly inactive users).
Users shuffled:
let remainingUserIds = shuffle(divisionUserIds.concat())
Replaced by (original) unshuffled array:
remainingUserIds = divisionUserIds.filter((uid) => !userCohorts[uid])
Should use shuffled array:
remainingUserIds = remainingUserIds.filter((uid) => !userCohorts[uid])