プロが教える店舗&オフィスのセキュリティ対策術

コインを投げて表が出れば1円受け取り、裏が出れば1円支払うというゲームを500回行います。
この結果(受け取り合計金額、支払の場合は受け取り額はマイナス)をエクセルでシミュレーションするには以下の方法でできるそうですが、何故このやり方でこのゲームの結果をシミュレーションしたことになるのかが私には理解できません。


(1)エクセルのRAND関数を使って乱数(0~1)を500個発生させ、
(2)発生させた乱数をNORMSINV関数にかける
(3)NORMSINV関数によって出力された値を合計する→この合計値がシミュレーションの結果となる


ご教示いただけるとありがたいです。

A 回答 (4件)

もっと簡単に、500個のセルに


=if(rand()<1/2,1,-1)
とでも入力して、その和をとった方が良いように思いますが、それはさておき。

そのゲームの1回の受け取り金額の期待値は
1*1/2+(-1)*1/2 = 0
その分散は
(1-0)^2*1/2+(-1-0)^2*1/2 = 1
となります。
各ゲームは独立で1回の受け取り金額の分布が同じなので、500回のゲームの受け取り合計金額の期待値は
0*500 = 0
分散は
1*500 = 500
であることがわかります。
そして、独立同一分布からの標本の和の分布は中心極限定理により正規分布に近似できることから、500回のゲームの受け取り合計金額は期待値が0、分散が500の正規分布に従うとして良いことになります。

ご質問の方法は逆関数法により標準正規分布に従う乱数を500個生成して、それらの値を合計するという方法であり、この合計は期待値が0、分散が500の正規分布に従うことから、ゲームの結果をシミュレーションできるのです。

この回答への補足

大変分かりやすく解説して頂き、誠にありがとうございます。

このゲームの場合、ある意味「たまたま」標準偏差が1、平均が0となるので上述の方法で必要十分だということでしょうか?

もしこのゲームが表が出たら2、裏が出たら-2というルールだったなら、平均が0は変わりませんが、標準偏差は2となります。その場合のシミュレーションは

1、RAND関数で500個の乱数を生成
2、NORMSINV関数にかける
3、NORMSINV関数の出力結果それぞれに2をかける
4、3の結果を合計する

という手順で問題ないでしょうか?

補足日時:2014/11/23 17:34
    • good
    • 0

回答No.2補足の質問についてですが、値を2倍にする手順でOKです。

    • good
    • 0
この回答へのお礼

重ね重ね、ありがとうございます。大変助かりました。またご縁がございましたら、よろしくお願い致します。

お礼日時:2014/11/24 00:00

RAND関数は一回ランさせるごとに0<x<1の一様乱数xを一個発生します。



従ってRANDを500回ランさせてx<0.5ならコインの表(H)、そうでなければ裏(T)と決めておけば

コイン投げのsimulationができるということが納得できますか。

手元のBASICでやってみると以下の通りでした。

プログラム

NT=0 : NH=0

for I=1 to 500

x=RND

if x<0.5 then NH=NH+1 else NT=NT+1

next I

M=NH-NT

print NH,NT,M

stop : end


結果は

252 248 4

でした。

つまり、表252回、裏248回、受取金4円


NORMSINV関数は正規分布に関係した関数でしょうがこんなもの必要ではありません。
    • good
    • 0
この回答へのお礼

シミュレーションだけが目的ならばその通りですね、ありがとうございます。

お礼日時:2014/11/23 17:35

検証は他の人に任せて、別を。



表(1)の場合2を、裏(0)の場合0を返すように考えます(1を足して返す)。

そうするとRAND関数で0か1の値が出る時、
総合計×2-試行回数(足した1を引く)
で答えが出ます。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2014/11/23 17:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!