Представьте себе игру, в которой бросается 20 8-гранных кубиков, и общее количество возможных результатов составляет 8 ^ 20. Чтобы вычислить вероятность возникновения определенного события, мы делим количество способов, которыми это событие может произойти, на 8 ^ 20.
Можно подсчитать количество способов получить ровно 5 кубиков со значением 3. (20 выбирают 5) дает нам количество заказов 3. 7 ^ 15 дает нам количество способов, которыми мы не можем получить значение 3 для 15 бросков. .
number of ways to get exactly 5, 3's = (20 choose 5)*7^15.
Ответ также можно рассматривать как количество способов переставить строку 3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0 , 0,0 (20 выберите 5) умножить на общее количество значений, равных нулю (при условии 7 допустимых значений) 7 ^ 15 (это правильно).
Вопрос 1: Как я могу рассчитать количество способов получить ровно 5 кубиков одинакового достоинства (то есть для всех значений кубиков). Примечание: если я просто наивно воспользуюсь своим первым ответом выше и умножу bt 8, я получу огромное количество двойного счета?
Я понимаю, что могу решить для каждого из случаев (5 единиц), (5, 2), (5, 3), ... (5, 8) суммировать их (проще говоря 8 * (5 единиц)). Затем вычтите сумму количества перекрытий (5 единиц) и (5 единиц), (5 единиц) и (5 единиц тройки) ... (5 единиц) и (5, 2) и ... и (5, 8). но это кажется чрезвычайно запутанным. Я хотел бы обобщить это таким образом, чтобы можно было масштабировать до большого количества выборок и большого количества классов.
Как я могу рассчитать количество способов получить хотя бы 5 кубиков одного достоинства?
Итак, 111110000000000000000 или 11110100000000000002, или 11111100000001110000, или 11011211222222223333, но не 00001111222233334444 или 000511512252363347744.
Я ищу ответы, которые либо объясняют математику, либо указывают на библиотеку, которая поддерживает это (модули python esp). Дополнительные баллы за детали и примеры.