2016-07-04 3 views
-2

Я новичок в программировании R. Мне нужно решить одну проблему в R. Мне нужно смоделировать следующий эксперимент в R. Рука в покере состоит из 5 карт, полученных из обычного пакета из 52 карт, причем порядок карт не важен. Найдите вероятность того, что данная рука имеет хотя бы одного короля и по крайней мере одну королеву.Имитировать эксперимент с программированием R

Я знаю, как найти по крайней мере 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 .. Спасибо

+0

Уже ответил здесь: https://math.stackexchange.com/questions/541220/what-is-the-probability-of-of-drawing-at-least-one-king-and-one-ace-in -a-five-ca – duffymo

+0

Если речь идет хотя бы о одном короле, зачем вам следить за количеством королей? – Psidom

+0

Спасибо duffymo. Я знаю, но я должен закодировать его в R, и я новичок в R. – priyanka

ответ

2

Вероятность руки 5 карт, которые содержат, по крайней мере, один король или королева, один может быть просто написано следующим образом, где sample(deck, 5) дает руку 5 карты в то время как any(c(12, 13) ...) проверяет, является ли King или Queen находится в руке и 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 

Что довольно близко.

А с другой стороны, если это действительно И что означает, по крайней мере, король и королева, моделирование дает:

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 

И число точно соответствует.

+0

Спасибо Psidom. Но по сути, когда я решаю этот вопрос, он дает 0.58. – priyanka

+0

Я хочу найти вероятность того, что у данной руки есть хотя бы один король и по крайней мере одна королева. – priyanka

+0

поэтому 'all' означает, что' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' – Psidom

Смежные вопросы