場景:
問題:
GNU R:
HyperGeometricProbabilityOfAcesTaken <- function(
numOfCards, numOfAces, numOfCardsTaken, numOfAcesTaken)
{
numOfOthers <- numOfCards - numOfAces
numOfOthersTaken <- numOfCardsTaken - numOfAcesTaken
myProbability <- choose(numOfAces, numOfAcesTaken) *
choose(numOfOthers, numOfOthersTaken) /
choose(numOfCards, numOfCardsTaken)
myProbability
}
myProbability <- vector(mode = "double", length = 3)
# 任拿 5 張撲克牌,僅有 1 張是 Ace 之機率
numOfCards <- 52
numOfAces <- 4
numOfCardsTaken <- 5
numOfAcesTaken <- 1
myProbability[1] <- HyperGeometricProbabilityOfAcesTaken(numOfCards, numOfAces, numOfCardsTaken, numOfAcesTaken)
print(sprintf("Exact 1 Ace:%.4f", myProbability[1]))
# 任拿 5 張撲克牌,全都不是 Ace 之機率
numOfCards <- 52
numOfOthers <- 48
numOfCardsTaken <- 5
numOfOthersTaken <- 5
myProbability[2] <- HyperGeometricProbabilityOfAcesTaken(numOfCards, numOfOthers, numOfCardsTaken, numOfOthersTaken)
print(sprintf("None is Ace:%.4f", myProbability[2]))
# 任拿 5 張撲克牌,至少有 1 張是 Ace 之機率
print(sprintf("At Least 1 Ace:%.4f", 1 - myProbability[2]))