2016-09-22 14 views
0

このコードは、私たちの学校では、多くの例の1つ(公正なダイスを転がすモデル)の1つです。このコードを解釈する助けが必要

x<-runif(1) 
y<-as.double(x<=c(1/6,2/6,3/6,4/6,5/6,1))*(1:6) 
x<-min(y[y>0]) 

このコードとサイコロの関係を理解することができません。

したがって、最初の行は、0と1の間で1つのランダムに一様な分布数xを生成します。 2番目の行では、条件をxに入れます。ベクトルの1/6,3/6,4/6,5/6,1)、TRUE = 1、そうでなければFALSE = 0となります。

そして、この結果にベクトル(1,2,3,4,5,6)が乗算されます。 最後に、そのベクトル積の最小値をとります(ゼロより大きくなければなりません)。

私はこの背後にある直感を得ることはできません。誰かがこのコードを実生活でサイコロを動かすこととの関係を説明することを心がけていますか?私は混乱しています。

答えて

1

従って、サイコロを転がすには、それぞれの数字に同じ1/6の確率が現れます。

ここでは、サイコロをシミュレートすることです。

したがって、最初の行では、0と1の間の乱数が生成されます。

比較される間隔はすべて同じサイズで、長さは1/6です。 ここで、xがこれらの間隔の1つにある場合、確率は再び1/6になります。 3行目で何が行われているのかは、区間xが崩れている場所を調べることです。

例を示します。 xは0.25とします。 その後、二行目のベクトルは次のようになります。乗算で

FALSE, TRUE, TRUE, TRUE , TRUE, TRUE 

をあなたが得る:

エンドxのため
0, 2, 3, 4, 5, 6 

は、だから、2

に等しく、最後のxは、ダイスが表示されている数字になっています

+0

私が混乱させるものは次のとおりです。 1.私たちの乱数xは0と1の間にあるのはなぜですか?無作為に選ばれたいくつかの間隔にあったでしょうか? 2.なぜベクター(1/6,2/6,3/6,4/6,5/6,1)を使用するのですか?同じサイズのものはどういう意味ですか?2/6-1/6 = 1/6と3/6-2/6 = 1/6などという意味ですか?それは私をダイスとの関係に混乱させてしまいます。 3.そして、このベクトルに(1,2,3,4,5,6)?このベクトルはサイコロの結果に似ていますか?しかし、なぜ我々はそのベクトル製品のミニマムを選ぶのだろうか?その背後にある理由は? – Biggiez

+0

あなたの質問に答えるには: 1.はい、他の間隔を選ぶことができます。サイコロをシミュレートするために重要なことは、ユニット分布が適用されることです。 1から2までの間隔を使用して、同じ長さの6つの間隔に分けることができます。 2.そのベクトルが使用されるのは、あなたの間隔のために、乱数が来るからです。はい、それは私が言っていることです、そこに各間隔は1/6の長さを持っています。 3.この質問はこの例で回答していますか? –

0

ベンジャミンは基本的にあなたのコードは

runif(1)= 0 1/6へ=ダイス= 1

runif(1)= 1/6 2/6へ=ダイス= 2

runif(1)= 2の場合/ 6([0、Y>] Y)自分である第一正を返す二行目は、結果のベクトルを返すので、X < -min

等3/6 =ダイス= 3

にダイロール

+0

しかし、なぜx <-min(y[y>]を満たすこれらの値の最小値を選ぶのですか?)j?なぜそれが選ばれた別の値ではありませんでしたか? – Biggiez

+0

xが2/6と3/6の間にあるということは、2番目のコード行に3/6のロールがあることを意味する(実際にはxが3/6だから0.5となることに同意する) 5/6および6/6(または1)がすべて3/6より大きい場合、x> 3/6,4/6,5/6および1(R TRUE = 1およびFALSE = 0で記憶)を求めるときにTRUEを返します。だから0,0,1,1,1,1にダイスロール(1,2,3,4,5,6)が乗算されるので、2番目のラインはダイスロール3,4,5,6を返しますxが2/6から3/6の間であれば、3のロールが正しい選択であり、最小であることがわかります。 – MorganBall

関連する問題