五张纸牌查理是您抽五张纸牌而不会破产的地方,即5张纸牌中的点是<=21。我想通过蛮力找到5张纸牌查理的概率-即模拟一个大次数,然后检查您是否破产。
通过使用蛮力使用R。我在这里假设有4个牌组,在娱乐场中很常见,我从这4个牌组中抽取5张牌,检查它们是否中了牌,是否算入了概率。谷歌搜索表明它应该在1/50左右,即2%:
deck <- c(rep(1:9, 16), rep(10, 64))
n <- 0
size <- 1:10e6
for (i in size){
smpl <- sample(deck,5,replace = F)
if (sum(smpl) <= 21){
n <- n+1
}
}
print(n/max(size) * 100)
[1] 5.98644
请注意,这里的“套牌”是积分系统,即我们有1:9的积分可用于4套西服,并且4张牌组因此需要1:9的16倍,同样,杰克·王后国王和“十”都算作十,但是4 * 4 * 4张可能的卡。
对5张无替换样本的卡进行抽样检查,检查总和是否等于21,如果算出总数,则最后进行1000万次并计算概率。但这只占6%,而不是2%。
我有两个问题:
1)我该如何修改它以便可以采样一亿或更多的剧本?
2)我有6%的概率在哪里出错?
答案 0 :(得分:0)
我认为这里的假设是应该为2%。
您的代码说大约5%。我改编了existing answer,它也说5%:
deck <- c(rep(1:9, 4), rep(10, 16))
result <- combn(deck, 5, function(x) {sum(x) <= 21})
sum(result)/dim(result)
[1] 0.05385693
答案 1 :(得分:0)
对于k = 5, 6, 7
-卡查理,您可以尝试使用replicate
进行以下操作(通过模拟计算概率):
sapply(5:7, function(k) mean(replicate(n=10^6,
sum(sample(c(rep(1:9, 4), rep(10, 16)), k, replace = F)) <= 21)))
#[1] 0.053943 0.008525 0.000890
这是概率随着k降低(对于k卡查理)
library(ggplot2)
ggplot(aes(card, prob),
data=data.frame(card=2:7, prob=sapply(2:7, function(x) mean(replicate(n=10^6, sum(sample(c(rep(1:9, 4), rep(10, 16)),x,replace = F)) <= 21))))) +
geom_point() + geom_line()