Python概率程序从d中的x张卡片中抽取x张卡片的几率

2024-10-01 07:47:48 发布

您现在位置:Python中文网/ 问答频道 /正文

所以这个程序大部分时间都是按预期工作的。当只有一张卡的差价时,它似乎失败了。例如,从一副40张牌中抽出6张牌,需要5张特定的牌,则返回值“0”

在其他情况下也有效。例如,从一副40张牌中抽出5张牌,想要3张特定的牌,则返回1/988的答案

所有的卡片都是独一无二的,相互独立。在

from math import factorial
from fractions import Fraction


deckNo = int(input("Enter the number of cards in the deck: "))
cardsDrawn = int(input("Number of cards drawn : "))
cardNo = int(input("Enter the number of cards you want to draw: "))


cardDifference = cardsDrawn - cardNo
newDeckNo = deckNo - cardNo

finalOdds = (factorial(cardsDrawn) * factorial(newDeckNo)) / (factorial(cardDifference) * factorial(deckNo))
finalOdds = Fraction(finalOdds).limit_denominator(10000)

print(finalOdds)

这是我用来计算概率的方法的错误吗?如果是,我应该用什么来代替它?在

编辑:抱歉,这样可以吗?在


Tags: ofthefromimportnumberinputintcards
1条回答
网友
1楼 · 发布于 2024-10-01 07:47:48

使用符号和scipy中的二项式系数函数,计算概率如下:

scipy.special.binom(deckNo-cardsNo,cardsDrawn -cardNo)/scipy.special.binom(deckNo,cardsDrawn)

请注意,我计算的上述表达式的简化版本并不适合我,因为我假设python无法管理阶乘,并且使用binom函数做得更好。在

相关问题 更多 >