-2

我是 R 编程的新手。我需要在 R 中解决 1 个问题。我需要在 R 中模拟以下实验。一手牌由 52 张牌的常规牌包中的 5 张牌组成,牌的顺序并不重要。找出给定手牌至少有一张王和至少一张王后的概率。

我知道如何找到至少 1 位国王,但不能找到至少一位国王和至少一位王后。对于至少 1 个国王代码是:

deck<- rep(1:13 , each=4)
#here J=11 , Q=12, K=13
nhands <- 1000
Xk<- c(rep(-1, nhands))
for( i in 1:nhands){
hand <- sample( deck , 5 , replace= FALSE)
numberofK<-0
for( j in 1:5){ # count Kings
if( hand[j] == 13){
numberofK <- numberofK +1
}
}
#print(numberofK)
Xk[i] <-numberofK
#print(hand)
}
table(Xk) /nhands

谁能帮我编写所需的 1 .. 谢谢

4

1 回答 1

2

5一手牌包含至少一个国王或一个皇后的概率可以简单地写成如下,其中sample(deck, 5)给出一手5牌,同时any(c(12, 13) ...)检查是否KingQueen手中,并sum计算这种情况在 1000 次模拟中发生的次数:

set.seed(10)
sum(sapply(1:100000, function(i) { any(c(12, 13) %in% sample(deck, 5))}))/100000
# [1] 0.58365

从理论上讲,这种情况的概率为:

(choose(52, 5) - choose(44, 5))/choose(52, 5)
# [1] 0.5821375

哪个非常接近。

另一方面,如果它确实是And这意味着至少有一个国王和一个王后,模拟给出:

set.seed(10)
sum(sapply(1:100000, function(i) { all(c(12, 13) %in% sample(deck, 5))}))/100000
# [1] 0.09932

理论上:

(choose(52, 5) - choose(44, 5) - (2*(choose(48, 5) - choose(44, 5))))/choose(52, 5)
# [1] 0.1001785

并且数字非常匹配。

于 2016-07-04T14:51:05.317 回答