【问题标题】:R and probabilityR 和概率
【发布时间】:2018-10-27 02:21:15
【问题描述】:

我正在尝试编写代码来获取特定场景的概率。有 52 张牌分解成 4 个花色牌堆。从每堆中随机抽取 1 张牌组成 4 张牌组合,然后将牌放回牌堆。您如何计算组合只有 1 张国王的概率? 我尝试了以下方法,但我认为我做错了什么

cards <- c(2:10,'J','Q', 'K','A') 
v <- sample(rep(cards,1:13),1000,replace=T)
cat('The probability of getting a King is approximately:',sum(v=='K')/length(v),'\n')

【问题讨论】:

  • 首先,你的rep是错误的,看rep(1:4, 1:4)看看怎么办;而是尝试rep(cars,4)。其次,您正在测试单张卡片,而不是四张卡片。第三,您正在采样 with 替换,这意味着可以获得四个 ace-of-spaces。
  • 试试table(replicate(1000, any(sample(rep(cards, 4), size=4) == 'K')))。
  • 如果在每次抽出 4 张牌后都要更换牌,我是否应该进行更换测试?
  • 当您重复 cards 向量 4 次时,不需要 replace 参数。但是,您可以使用sample(cards, 4, replace=TRUE) 实现相同的采样。顺便说一句,使用any 会多计,因为它会为任意数量的K 返回TRUE。将任何模拟结果与精确值进行比较:p(K) * p(¬K)^3 * 4;你想要 1 K 和 3 ¬K,K 可以用 4 种方式抽取——第一张到第四张牌。这是 1/13 * (12/13)^3 * 4。
  • 但是你没有 52 张卡片,@r2evans。你有 13 张牌,其中一张牌被选中并在该组中替换。完成 4 次,这与从 52 张牌中选择 4 张牌是同构的。

标签: r probability-theory


【解决方案1】:

据我了解您的问题,您可以使用此代码解决问题。这适用于从每堆中抽取 1 张牌的单次给定抽签,或替换后的后续给定抽签。如果您对多次抽签或后续抽签没有替换的概率感兴趣,则不起作用。这不是基于重复抽样的计算方式。

所有可能的抽牌组合,即每堆的国王或非国王:

Hearts <- rep(c((rep("k",1)),(rep("n",1))),8)
Spades <- rep(c((rep("k",2)),(rep("n",2))),4)
Clubs <- rep(c((rep("k",4)),(rep("n",4))),2)
Diamonds <- rep(c((rep("k",8)),(rep("n",8))),1)

pile.possibilities <- data.frame(Hearts,Spades,Clubs,Diamonds)

并绘制每堆的概率:

pile.possibilities$H.prob <- ifelse (pile.possibilities$Hearts == "k", (1/13), (12/13))
pile.possibilities$S.prob <- ifelse (pile.possibilities$Spades == "k", (1/13), (12/13))
pile.possibilities$C.prob <- ifelse (pile.possibilities$Clubs == "k", (1/13), (12/13))
pile.possibilities$D.prob <- ifelse (pile.possibilities$Diamonds == "k", (1/13), (12/13))

每个组合的组合概率:

pile.possibilities$Combo.prob <- pile.possibilities$H.prob *  
                                 pile.possibilities$S.prob *   
                                 pile.possibilities$C.prob *   
                                 pile.possibilities$D.prob

确定您将拥有这些组合之一。

> sum(Pile.combo.prob)
[1] 1

过滤您感兴趣的组合:

pile.possibilities$one.king.combo <- paste(pile.possibilities$Hearts,pile.possibilities$Spades,pile.possibilities$Clubs,pile.possibilities$Diamonds,sep = "")
pile.possibilities$one.king.combo <- sapply(strsplit(pile.possibilities$one.king, NULL), function(x) paste(sort(x), collapse = ''))

one.king.probability<- sum(subset(pile.possibilities, one.king.combo == "knnn")$Combo.prob)
one.king.probability
[1] 0.2420083

#Final data frame used
> pile.possibilities
   Hearts Spades Clubs Diamonds     H.prob     S.prob     C.prob     D.prob Combo.prob one.king.combo
1       k      k     k        k 0.07692308 0.07692308 0.07692308 0.07692308 3.501278e-05           kkkk
2       n      k     k        k 0.92307692 0.07692308 0.07692308 0.07692308 4.201534e-04           kkkn
3       k      n     k        k 0.07692308 0.92307692 0.07692308 0.07692308 4.201534e-04           kkkn
4       n      n     k        k 0.92307692 0.92307692 0.07692308 0.07692308 5.041840e-03           kknn
5       k      k     n        k 0.07692308 0.07692308 0.92307692 0.07692308 4.201534e-04           kkkn
6       n      k     n        k 0.92307692 0.07692308 0.92307692 0.07692308 5.041840e-03           kknn
7       k      n     n        k 0.07692308 0.92307692 0.92307692 0.07692308 5.041840e-03           kknn
8       n      n     n        k 0.92307692 0.92307692 0.92307692 0.07692308 6.050208e-02           knnn
9       k      k     k        n 0.07692308 0.07692308 0.07692308 0.92307692 4.201534e-04           kkkn
10      n      k     k        n 0.92307692 0.07692308 0.07692308 0.92307692 5.041840e-03           kknn
11      k      n     k        n 0.07692308 0.92307692 0.07692308 0.92307692 5.041840e-03           kknn
12      n      n     k        n 0.92307692 0.92307692 0.07692308 0.92307692 6.050208e-02           knnn
13      k      k     n        n 0.07692308 0.07692308 0.92307692 0.92307692 5.041840e-03           kknn
14      n      k     n        n 0.92307692 0.07692308 0.92307692 0.92307692 6.050208e-02           knnn
15      k      n     n        n 0.07692308 0.92307692 0.92307692 0.92307692 6.050208e-02           knnn
16      n      n     n        n 0.92307692 0.92307692 0.92307692 0.92307692 7.260250e-01           nnnn

【讨论】:

    猜你喜欢
    • 2017-08-13
    • 2020-12-05
    • 2022-01-14
    • 2022-01-05
    • 2019-05-15
    • 2016-08-11
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多