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