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

何枚かのコインを同時に振って、0から9の乱数を作るには、どのような方法があるでしょうか?
コイン一つ一つに目印を付けて…などという方法ではなく数学的な方法を教えていただけると嬉しいです。
硬貨の裏表は五分五分の確率で現れるものとします。

よろしくお願いします><

A 回答 (5件)

>コイン一つ一つに目印を付けて…などという方法ではなく


これがどのような方法を言われているのか、具体的にはわかりませんが。

考えついた方法を書いてみます。
(A) 10枚のコイン
i) 10枚のコインを同時に投げます。
ii) 表が出た枚数-1をそのときの数字とします。
この方法が「目印をつけて」のことでしょうか?

(B) 5枚のコイン
i) 5枚のコインに表裏に0~9の数字を書きます。
ii) コインを箱に入れて、1枚取り出します。
iii) 取り出したコインを投げて出た数字をそのときの数字とします。
この操作を繰り返します。

(C) 2進法
i) 4枚のコインを「1の位」「2の位」「4の位」「8の位」とします。
ii) コインの表を「1」、裏を「0」としておきます。
iii) 4枚のコインを投げて、表裏の数字を足し合わせます。
たとえば、8の位から順番に「裏」「表」「表」「裏」と出たとすれば、
8×0 + 4×1 + 2×1 + 1×0 = 6となります。
ただし、この場合では 10~15の数字が出てしまうので、その場合はやり直しとして記録しないこととします。

(C)がコインの枚数が少ないのですが、
「やり直し」が発生してしまうのがところが難点です。
    • good
    • 1
この回答へのお礼

Bの方法が「目印を付けて…」という内容と近かったと思います。
「何枚かの硬貨を同時に振って」という意図は、「複数のランダムな二進数を用いて」ということですので硬貨に数字を書いてしまったら裏表が二進数以上の意味を持ってしまうので。

Aの方法は、10枚の硬貨を用いた場合、現れる表の数のパターンは11個なので全部の硬貨が裏だった場合は「-1」となってしまい0~9の乱数は出せませんね。
しかし硬貨を9枚にすると丁度0~9までの数字が作れるので、Aの方法を参考にさせていただきます。

回答ありがとうございました!

お礼日時:2009/11/18 21:01

なるべく少ないコインで,


なるべくコインに印をつけないで,
という条件で考えました。

5枚のコインのうち2枚だけ名前をつける(A,Bとする)。
全部表または全部裏が出た場合は振りなおす(残りは30通り)。
名無しの3枚のうち表が出た枚数で分類する
・表が1枚⇒Bが表ならx=1,裏ならx=3とする
・表が2枚⇒Bが表ならx=2,裏ならx=4とする
・それ以外⇒Bに関係なくx=0とする。
*Aが表ならxを答える
*Aが裏ならx+5を答える

このようにすると,0~9が等確率で現れます。
    • good
    • 0

#1です。



masa2211さん、検証いただきありがとうございます。
(B)について言われているとおりです。
「二項分布」を忘れていました。

(C)の方法は、10で割り切れるようなコインの枚数があればいいのですが
それがないので「どこかで切り捨てる」ことが必要になります。
10枚ぐらいが手ごろで切り捨てる無駄も少ないので、よいと思います。

10枚のコインで 1000まで数えられるところが、2進法の威力ですね。
    • good
    • 0
この回答へのお礼

皆さん丁寧に答えてくださってありがとうございました。

さまざまな方法を検証させていただいた結果、やり直しなしでは二進数で乱数0~9を発生させる方法はないと学びました。
naniwacchiさんの挙げてくださった方法がより有効かと判断しお礼をつけさせていただきます。

ありがとうございました。

お礼日時:2009/12/02 17:32

>「複数のランダムな二進数を用いて」


それがアリなら、当該のランダム二進数(桁が充分大きいとして。)を十進数に変換して、桁を順番に取り出せば良いでしょう。

>10枚のコインを同時に投げ、表が出た枚数-1を使う。
それでは、通常の意味の乱数になりません。
通常の意味の乱数は、0から9の出現確率が等しくなる必要がありますが、
10枚のコインを同時に投げた場合、5枚表の可能性が高く、1枚とか9枚表の確率は低いです。
よって、乱数ではありません。
で、0~9が均等に出るようにするには、たとえばosu_neko09さんの方法とか。
それでも若干に偏りあり。

おすすめは、naniwacchiさんのCの方法で、コインは10枚。
発生する数は0~1024なので、1000以上は振り直し、1000未満なら、10進3桁なので0~9の3回分の乱数が切り出せます。
 ※ただし、naniwacchiさんのCの方法は、通常、コイン一つ一つに目印を付けること該当してしまいます。
  mmammammaさんはそう思っていないみたいですが.....
    • good
    • 0

振るのが(既定の回数)だけとか、同時に振ったコインの一枚一枚が区別できないのであれば、0~9が一様に出る乱数を作るのは不可能ですね。


たとえば、コインを30枚負って、表が出た枚数が0枚~30枚まで順に4,4,4,4,4,4,2,3,2,1,0,4,3,2,1,0,4,3,2,1,0,4,3,2,3,1,1,1,1,1,1とし、さらに一枚コインを振って、表なら5を足す、という方法なら、2145:2147:2147:2145:2152くらいの比率に出来ますが・・。

振りなおし有りでしたら、(最悪、無限回振ってよければ)均等に出すように出来ますね。
    • good
    • 0

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