Я пытаюсь создать список комбинаций из списка ([0,1,2,4,6]). Мне нужны комбинации с 12 значениями.
Eg:
"(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2)"
"(0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2)"
"(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4)"
"(0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2)"
"(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4)"
"(0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2)"
"(0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 4)"
"(0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 6)"
"(0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2)"
Это работает отлично, но теперь я хочу сделать так, чтобы положение этих значений в каждом выводе было случайным. Что-то типа:
"(0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2)" should be "(2, 0, 2, 0, 1, 2, 2, 0, 2, 1, 2, 0)"
Это код, который я написал.
combinations_list = [comb for i in range(1, 13) for comb in combinations_with_replacement(numbers, i) if sum(comb) == match_points]
где match_points может быть любым числом. Скажем, для приведенного выше вывода match_points было 14. и число = [0, 1, 2, 4, 6]
Как рандомизировать значения комбинации? Кроме того, мне нужно ограничить количество нулей в комбинации до 6.
Eg:
"(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 6)"
"(0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 6)"
"(0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 6)"
не должно генерироваться.