gpt4 book ai didi

Python 概率程序 - 从一副牌中的 x 张牌中抽出 x 张牌的几率

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:22 25 4
gpt4 key购买 nike

因此该程序在大多数情况下都能按预期运行。当只有 1 张卡的差异时,它似乎失败了。例如,从 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)

这是我使用的概率方法的错误吗?如果是这样我应该用什么替换它?

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

最佳答案

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

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

请注意,我计算的上述表达式的简化版本对我来说效果不佳,因为我认为 python 在管理阶乘方面存在问题,并且使用二项函数可以做得更好。

关于Python 概率程序 - 从一副牌中的 x 张牌中抽出 x 张牌的几率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36107777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com