Я пишу программу, которая просматривает каждую возможную сумму броска костей, если X умереть с X сторонами. Например, для двух кубиков с шестью сторонами мне нужен список элементов, дающих все возможные уникальные суммы, которые можно получить с помощью этих кубиков (что-то вроде 2,3,3,4,4,4,4 и т. Д.). Я могу сделать это для небольших наборов (2 кубика и 6 сторон - это нормально), но для больших наборов, таких как 10 кубиков и 10 сторон, я сталкиваюсь с проблемами мема. Я думаю, что нашел решение, но у меня проблемы с реализацией.
У меня есть список списков, содержащий все броски каждого отдельного кубика. Для этого примера у нас есть 3 кубика, которые могут бросить 1, 2 или 3.
dice = [[1,2,3], [1,2,3], [1,2,3]]
outcomes = list(map(sum, zip(itertools.product(*dice))))
Я думаю, что части есть, но я продолжаю получать TypeError: неподдерживаемые типы операндов для +: 'int' и 'tuple'. Я пытался перемещать кусочки множеством способов, но ничего не щелкнуло. Что я делаю неправильно? В конечном счете мне дают число, скажем 6, которое я должен выяснить, какова вероятность того, что я брошу это число. Итак, моя цель с помощью приведенного выше кода - получить генератор, который я получу за общее число появившихся X-х чисел, и выяснить вероятность появления X-чисел. Я получил список для меньших входных данных, но, как я уже сказал, как только я получу большие входные данные, список становится слишком большим