Во-первых, вы всегда можете случайным образом отсортировать список в конце, так что давайте не будем беспокоиться о «случайных перестановках» (сложных); и просто беспокоиться о том, чтобы: 1) сделать перестановки (легкими) и 2) рандомизировать их (легкими).
Если вы хотите «по-настоящему» случайные группы, вы должны признать, что рандомизация по своей природе на самом деле не допускает ограничения «равномерного распределения» результатов - вы можете получить это или вы можете получить ряд аналогичных смотря те Если вы действительно хотите равномерного распределения, сначала сделайте наборы равномерно распределенными, а затем рандомизируйте их в группу.
Нужно ли использовать каждый элемент в наборе x равномерно? Из правил не ясно, что я не мог просто дать следующую интерпретацию:
Обратите внимание на следующее: «во всех списках количество раз, когда каждый элемент используется одинаково (или максимально близко)» *
Исходя из этого критерия и правила z
Теперь я не использовал 2 или 3, но вы не сказали, что я должен использовать их все. Если бы мне пришлось использовать их все, и мне все равно, чтобы доказать, что я «настолько близок, насколько это возможно» к равномерному использованию, я бы просто перечислил все элементы в списках, например:
0,1 2,3 0,1 2,3 0,1 2,3
Наконец, предположим, мне действительно нужно использовать все элементы. Чтобы вычислить, сколько раз каждый элемент может повторяться, я просто беру (y * z) / (количество х). Таким образом, мне не нужно сидеть и беспокоиться о том, как разделить пункты в списке. Если есть остаток или результат меньше 1, то я знаю, что я не получу точное количество повторений, поэтому в таких случаях не имеет большого значения пытаться тратить вычислительную энергию, чтобы сделать ее идеальной. Я утверждаю, что самый быстрый результат - это просто перечислить, как указано выше, и использовать вычисления здесь, чтобы показать, почему идеальный результат был или не был достигнут. Можно было бы использовать причудливый алгоритм, чтобы извлечь из этого расчета, сколько позиций будет дубликатов, но «это слишком долго, чтобы уместиться здесь на полях».
* Каждый список имеет одинаковое количество элементов z, поэтому будет невозможно создать списки, где z больше, чем x, и при этом выполнять правило, согласно которому ни один список не может содержать один и тот же элемент дважды. Следовательно, это правило требует, чтобы z не превышало x.