2016-07-04 11 views
-2

Rプログラミングでは新しいです。私はRで1つの問題を解決する必要があります。Rで次の実験をシミュレートする必要があります。 ポーカーハンドは、52枚のカードの従来のパックから5枚のカードで構成されています。与えられた手に少なくとも1人の王と少なくとも1人の女王がいる確率を探します。Rプログラミングによるシミュレーションのシミュレーション

私は少なくとも1人の王を見つける方法を知っていますが、少なくとも1人の王と少なくとも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

それが少なくとも1人の王なら、なぜ王の数を追跡する必要がありますか? – Psidom

+0

ありがとうduffymo。私は大脳皮質を知っていますが、私はRでそれをコード化する必要があり、私はRに初めてです。 – priyanka

答えて

2

であることができる少なくとも1つのキングまたはクイーンサイズを含んでい5カードの手の確率

:単に any(c(12, 13) ...)チェック Kingまたは Queenは、このようなケースが1000シミュレーション内で起こる何回手と sumカウント内にあるかどうかながら sample(deck, 5)5カードの手を与えるところ、以下のように記述

理論的には、このような場合の確率は次のようになります。

(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

私は、与えられた手に少なくとも1人の王と少なくとも1人の女王がいる確率を見つけたいと思います。 – priyanka

+0

'all'は' 12'と '13'の両方を手に入れ、真実を返すことを意味しますが、これについては特別な問題は見当たりませんが、後で更新する方法を見ていきます。 – Psidom

関連する問題