R и вероятность - PullRequest
       13

R и вероятность

0 голосов
/ 17 мая 2018

Я пытаюсь написать код, чтобы получить вероятность определенного сценария. Есть 52 карты, разбитые на 4 стопки. 1 карта случайным образом вытягивается из каждой колоды, чтобы составить комбинацию из 4 карт, а затем карты возвращаются в свои стопки. Как вы определяете вероятность комбинации только с одним королем? Я попробовал следующее, но я думаю, что я делаю что-то не так

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 Ответ

0 голосов
/ 17 мая 2018

Как я понимаю ваш вопрос, вы можете решить его, используя этот код.Это работает для одного данного розыгрыша 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...