Как разделить список на более мелкие списки, чтобы шансы одного элемента на другой элемент были равномерно распределены?

1

Я борюсь с алгоритмом, чтобы разделить группу участников на более мелкие группы, чтобы составить раунды. Возьмем, к примеру, группу из 20 человек, которую я хочу разделить на 3 группы (7,7,6). Для каждого раунда в конкурсе группы разные, так что каждый должен сражаться со всеми остальными в довольно справедливом распределении.

Проблема заключается в том, что с (наивным) случайным выбором один человек должен сражаться с одним и тем же человеком больше, чем с другим. То есть Два элемента часто оказываются в одной группе.

Я хотел бы сделать это более справедливым, так что для определенного количества участников, размер группы (не все группы имеют одинаковый размер) и количество раундов, алгоритм находит справедливый набор групп за раунд, чтобы в среднем каждый участник имеет одинаковые шансы встретить одного и того же участника во время раундов.

Есть ли литература по этой теме, с которой я могу консультироваться? Или любые известные алгоритмы?

  • 3
    Звучит вопрос, на который лучше ответить на stats.stackexchange.com .
Теги:
algorithm
combinatorics

2 ответа

1
Лучший ответ

Вы попадаете в тему, которая была изучена в комбинаторики, но на самом деле производство этих проектов удивительно сложно. См. http://en.wikipedia.org/wiki/Block_design для примера того, что вам нужно узнать больше. Если вам нужна помощь, я предлагаю просить https://math.stackexchange.com/, потому что вы с большей вероятностью найдете кого-то, кто помнит этот материал. (Мне не приходилось смотреть на этот материал в этом тысячелетии, иначе я бы сказал что-то более полезное.)

0

вы можете посмотреть на этот метод: random.sample(population, k)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню