Skip to content

StanislavVolodarskiy/fisher_table

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

fisher_table

Программа для составления турнирных таблиц. Соревнование состоит из трёх туров. В каждом из туров участники расставляются в случайном порядке. Среднее место всех участников в таблице примерно одинаково, так чтобы участники не могли получить преимущество попадая в начало (или конец) списка во всех турах.

$ python fisher_table.py 10
Используйте '--seed 561571' чтобы воспроизвести результаты.

-----------------------------
 1  2  3  4  5  6  7  8  9 10
-----------------------------
 9  5  3  4  6  1 10  2  8  7
10  8  3  6  7  5  2  1  4  9
 7  2  1  4  8  9  6 10  5  3
-----------------------------

Ожидаемое среднее место 5.5. Диапазон средних мест в таблице от 5.333 до 5.667.

 1:  6  8  3 : 5.667
 2:  8  7  2 : 5.667
 3:  3  3 10 : 5.333
 4:  4  9  4 : 5.667
 5:  2  6  9 : 5.667
 6:  5  4  7 : 5.333
 7: 10  5  1 : 5.333
 8:  9  2  5 : 5.333
 9:  1 10  6 : 5.667
10:  7  1  8 : 5.333

Первая строка напоминает что используется генератор случайных чисел. Зафиксировать результат можно с помощью --seed. Вторая строка выводит ожидаемое среднее место в таблице. Реальные средние места могут отличаться от ожидаемого. Для оценки качества результата выводится диапазон средних мест участников в этой конкретной таблице.

Последней напечатана сама таблица. В заголовке - номер места, в теле - номера участников в каждом из трёх туров.

В некоторых ситуациях удаётся построить полностью сбалансированную таблицу.

$ python fisher_table.py 11
Используйте '--seed 14330' чтобы воспроизвести результаты.

--------------------------------
 1  2  3  4  5  6  7  8  9 10 11
--------------------------------
 1 11  4  3  6  9  7  8 10  5  2
 7  8  9  2 11  5  3 10  6  4  1
10  5  2  6  4  1  3  8  9  7 11
--------------------------------

Ожидаемое среднее место 6. Расписание сбалансировано.

 1:  1 11  6 : 6
 2: 11  4  3 : 6
 3:  4  7  7 : 6
 4:  3 10  5 : 6
 5: 10  6  2 : 6
 6:  5  9  4 : 6
 7:  7  1 10 : 6
 8:  8  2  8 : 6
 9:  6  3  9 : 6
10:  9  8  1 : 6
11:  2  5 11 : 6

Флаги

-h, --help показывает помощь по команде.

--seed N фиксирует состояние генератора случайных чисел. Без него программа выдаёт каждый раз новую случайную таблицу.

--small N управляет составлением таблиц. Чем больше таблица, тем дольше она строится. Поэтому большие таблицы строятся из частей. Это ускоряет построение и ухудшает баланс. Если размер таблицы больше N, она составляется из частей. Иначе таблица строится целиком и будет получен наилучший возможный баланс.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages