次のコードサンプルがあります
import itertools
import random
set_size = 2
schedule = set()
teams = range(10)
for comb in itertools.product(teams, repeat=set_size):
comb = sorted(list(comb))
if len(set(comb)) == set_size:
schedule.add(tuple(comb))
schedule = list(schedule)
random.shuffle(schedule)
home = {}
for game in schedule:
if home.has_key(game[0]):
home[game[0]] += 1
else:
home[game[0]] = 1
print home
それは有効なスケジュールを生成しますが、問題は、一部のチームがホームゲームに非常に偏っていることです.
たとえば、自宅のプリントアウトは
{0: 5, 1: 3, 2: 5, 3: 5, 4: 5, 5: 5, 6: 5, 7: 5, 8: 4, 9: 3}
キーはチーム、値はホームゲーム数です。リーグに 10 チームある場合、ホームに 5 を獲得するチームもあれば、4 しか獲得しないチームもあると予想します。