- ベストアンサー
幾枚かのコイントスで0~9の乱数を作る
- みんなの回答 (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)がコインの枚数が少ないのですが、 「やり直し」が発生してしまうのがところが難点です。
その他の回答 (4)
- mis_take
- ベストアンサー率35% (27/76)
なるべく少ないコインで, なるべくコインに印をつけないで, という条件で考えました。 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が等確率で現れます。
- naniwacchi
- ベストアンサー率47% (942/1970)
#1です。 masa2211さん、検証いただきありがとうございます。 (B)について言われているとおりです。 「二項分布」を忘れていました。 (C)の方法は、10で割り切れるようなコインの枚数があればいいのですが それがないので「どこかで切り捨てる」ことが必要になります。 10枚ぐらいが手ごろで切り捨てる無駄も少ないので、よいと思います。 10枚のコインで 1000まで数えられるところが、2進法の威力ですね。
お礼
皆さん丁寧に答えてくださってありがとうございました。 さまざまな方法を検証させていただいた結果、やり直しなしでは二進数で乱数0~9を発生させる方法はないと学びました。 naniwacchiさんの挙げてくださった方法がより有効かと判断しお礼をつけさせていただきます。 ありがとうございました。
- masa2211
- ベストアンサー率43% (178/411)
>「複数のランダムな二進数を用いて」 それがアリなら、当該のランダム二進数(桁が充分大きいとして。)を十進数に変換して、桁を順番に取り出せば良いでしょう。 >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さんはそう思っていないみたいですが.....
- osu_neko09
- ベストアンサー率48% (56/115)
振るのが(既定の回数)だけとか、同時に振ったコインの一枚一枚が区別できないのであれば、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くらいの比率に出来ますが・・。 振りなおし有りでしたら、(最悪、無限回振ってよければ)均等に出すように出来ますね。
関連するQ&A
- コイントスの統計の検定
コインの表が出る確率をxとすると裏が出る確率は1-xになります。 コイントスを2回一組として300回ほど行いました。 表表が、90回、表裏あるいは裏表が150回、裏裏が60回出たとすると、 これが確率的にありうるかどうかを検定で調べたいと考えています。 どんな式になりますでしょうか?
- 締切済み
- 数学・算数
- 乱数の発生方法
こんにちは! いつも大変参考にさせていただいております。 どうか教えていただきたい事があります。 数学は大の苦手で、学生時代からほとんど勉強してこなかっただけに、 数学の本を読んでも、今回の問題とどのように関係しているのかがわからず、お手上げ状態です。 実行したいのは、確率により乱数を発生させたいです。 たとえば、0から2の乱数を発生させるにあたり、 0の発生は50%、 1の発生は25%、 2の発生は25%、 というように、発生する確率を設定したいと思っています。 確率の本を読んでみたのですが、入門書には確率の求め方は載っていたのですが、それをどのように利用したらいいのかわかりません。 このような乱数の発生のさせかたは可能でしょうか? また、どのようにしたらいいのでしょうか? 教えてください。。。
- 締切済み
- Visual Basic
- 確率の問題
またまた質問があるので誰かお願いします。 「問題文」 n枚の硬貨を同時に投げて表の出たものを取り去り、1回後に、もしも硬貨が残っていれば残った硬貨をもう一度同時に投げて表の出たものを取り去ることにする。このとき全部なくなる確率を求めよ。 「模範解答」 n枚のコインを1、2、3~~~nというように区別をつけ1枚のコインを続けて2回投げることを1、2、3~~~~nの順に行う、と考える。 1枚のコインを2回投げたとき、そのコインがなくならない確率は1/2×1/2=1/4 。 よって1枚のコインを2回投げたとき、そのコインがなくなる確率は1-1/4=3/4 ゆえに1、2、3~~~nを同じことを続けると(3/4)^n となる。 となっています。なおn乗には 「^n」 の記号を使ってます。 質問したいことは題意を「n枚のコインを1、2、3~~~nというように区別をつけ1枚のコインを続けて2回投げることを1、2、3~~~~nの順に行う」という試行に読み替えることがどうして可能なのかということです。 同時になげる場合 「表(または裏)の枚数」しか問われない(??)のに対して言い換えた試行は「区別をつけているぶん区別のついた各コインのせいで場合の数も増えると思うのですが。
- ベストアンサー
- 数学・算数
- 硬貨を用いた乱数表の作成
学校の課題で、 硬貨の裏表が出る確率は2分の1かどうかは確かではない場合に、硬貨一枚を用いた乱数表の作成方法を記述せよ。 といった課題が出ました。 硬貨の裏表の確率が等しく2分の1ならば二進数を用いて説明できますが…この場合だと全くわかりません。 よければ教えてください。
- 締切済み
- 数学・算数
- 乱数の数学的な定義はありますか?
数学の背景がないので、質問が変かも知れませんが、よろしくお願いします。 「乱数」には、数学的な定義がありますか? 例えば、「いかなる視点からも規則性のない数の並び」とか、「偶然にまかせた数の並び」とか言えるのでしょうか? また、ある数列を与えられたときに、それが、「乱数」かどうかを調べる方法はあるのでしょうか? というのは、たまたま、1が100個ならんだ数列でも、必ずしも「乱数」ではないと言えないような気がするのです。もし、偶然に任せるという意味で乱数を考えるとすると、たまたま、1が100個並ぶことも有り得るし、それを意識的に排除すると、むしろ、自然な「乱数」ではなくなってしまうような気がして、よくわからなくなってしまいました。
- ベストアンサー
- 数学・算数
- 硬貨の出る目の数について
硬貨の出る目の数について 4枚のコインを投げる時、少なくとも1枚裏が出る確率は? の答えの導き方をお教えください。 4枚のコインを投げる場合の、起こり得る全ての総数((1))はわかるのですが、 少なくとも1枚裏が出る確率((2))の出し方が分かりません。 (1)16。4枚の硬貨を同時に投げて、表・裏の総数nはn=2の4乗で16。 よろしくお願いします。
- ベストアンサー
- 数学・算数
- 乱数の発生確率(c++)
0,1の2値の乱数を発生させるとき、1の発生確率を例えば20%にするにはどのようにすればよいのでしょうか。 発生乱数を除算して余りを求めて・・・・の方法など試したのですが、うまいこといきませんでした。(プログラムが動かないのではなく結果が) 私の確率の認識が間違っているのかもしれませんが、この場合、1000個発生させた場合、300近く1が出れば良いということですよね。
- ベストアンサー
- C・C++・C#
お礼
Bの方法が「目印を付けて…」という内容と近かったと思います。 「何枚かの硬貨を同時に振って」という意図は、「複数のランダムな二進数を用いて」ということですので硬貨に数字を書いてしまったら裏表が二進数以上の意味を持ってしまうので。 Aの方法は、10枚の硬貨を用いた場合、現れる表の数のパターンは11個なので全部の硬貨が裏だった場合は「-1」となってしまい0~9の乱数は出せませんね。 しかし硬貨を9枚にすると丁度0~9までの数字が作れるので、Aの方法を参考にさせていただきます。 回答ありがとうございました!