R 和概率

标签 r probability-theory

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

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')

最佳答案

据我了解你的问题,你可以使用这段代码来解决这个问题。这适用于从每堆中抽取 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

关于R 和概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50380876/

相关文章:

R:ggplot:错误:未知参数:binwidth、bins、pad

r - 如何从带有 Rscript 和命令行参数的命令行使用 knitr?

algorithm - 在 O(n) 时间和 O(1) 空间中生成数组的随机排列

r - 尝试使用 [R] 中的函数 rbern 时出错

c# - 从 Matlab 到 C# 的多元正态随机数

r - 在 R jupyter 笔记本中使用 ipython 魔法?

在biomod2中运行maxent时出现Java错误

r - R 是否区分字符向量和字符串?

machine-learning - Stan:如何使用变分推理来拟合分布

machine-learning - 朴素贝叶斯是否应该对词汇表中的所有单词进行乘法运算