アプリ版:「スタンプのみでお礼する」機能のリリースについて

偏りのないコインを5回投げます。
コインの表裏の結果を、表を1、裏を0として、左端から表記するとして、
結果が00000になる確率と、01011になる確率は、同じになります。

これは当たり前ですが、しかし例えば10回コインを投げて、その数列のどこかに00000や01011のパターンが登場する確率を考えると、00000は112/1024、01011は191/1024になります。
この意味で、01011の方が00000よりも出やすいと表現することができると思います。
(ここでは数列のどこかに対象が登場するか、否かだけ考慮して、登場回数は考慮しません)

コインを10回投げて、そこに任意のパターンが出現する確率を求める方法はないでしょうか。
もちろん、これはExcelとかで2^10の全パターンを書き出して、検索すればよいのですが、
01011は191/1024になるというのもその方法でやったのですが、そうではなく何か計算式で求める方法があれば、ご教示ください。

A 回答 (5件)

「与えたパターンを含む長さ10の列が何通り作れるか」を数え上げたいわけですが、例えば


0000000000 の中に"00000"というパターンは6回含まれる。
1000000000 の中に"00000"というパターンは5回含まれる。
1010101010 の中に"10101"というパターンは3回含まれる。
1101110110 の中に"11011"というパターンは2回含まれる。
1101101100 の中に"11011"というパターンは2回含まれる。
1100110010 の中に"11001"というパターンは2回含まれる。
1100011000 の中に"11000"というパターンは2回含まれる。
という具合で、数え上げの際に必要な「重複の除去」の仕方がパターンによって異なりますんで、とてもややっこしい。そう簡単にはいきません。
 要点は「あるパターンPを複数回含む列」を数えること。そのために「あるパターンPと、P自身をkだけ右にずらしたものとの重なる部分が一致するような、そういうkはナニとナニか」ということを調べておく必要があります。
 長さmのパターンを分類する方法と、それぞれの分類に属するパターンが長さNの列のうち何個の列に含まれるかを計算する方法は、説明がすんごく煩雑になるんでパスしますが、ともあれ結果だけ示しますと、パターンPを
  P = <p1,p2,p3,p4,p5>
と表して a≠b とするとき
  (1) P = <a,a,a,a,a>
  (2) P = <a,b,a,b,a>
  (3) P = <a,a,b,a,a>
  (4) P = <a,b,x,a,b> (xはaでもbでもok)
  (5) (1)〜(3) 以外で P = <a,x,y,z,a> (x,y,zはaでもbでもok)
  (6) (1)〜(5) 以外。
と分類します。するとPを含む長さNの列の数は、Pが
  (1)なら 112 通り
  (2)なら 159 通り
  (3)なら 175 通り
  (4)なら 179 通り
  (5)なら 187 通り
  (6)なら 191 通り
ということになる。(はず)
 というわけで、長さ10程度の列でしたらexcelにやらせとくが宜しいかと思います。長さ20ぐらいでもVBAなら行けるでしょう。

 余談ながら、「あらかじめパターンとそれ自身をズラしたものとをマッチングして分類しておくことによって、長い列の中からパターンを速く探す」というアルゴリズムは、テキストの検索に使われています。
    • good
    • 0
この回答へのお礼

ありがとうございます。
場合の数がパターンが6になるというのは確かめていたのですが、
表裏の並びとの対応には気づきませんでした。

>・・・マッチングして分類しておくことによって、長い列の中からパターンを速く探す」というアルゴリズム

というのは、アルゴリズムに何か名前があるのでしょうか。
お教えいただければ、幸いに存じます。

お礼日時:2022/08/08 06:30

#1です。

ごめんなさい。取り下げます。

私の方法は残りも含めて特定パターンになることも考えられます。ですから、考慮不足でした。すみません。
    • good
    • 0

ものは言いいようではあるけれど...


一度の 10 回投げの中で何度も登場しやすいパターン
ほど「出にくい」と言っているわけですね。

10 回投げの k 回目から k+4 回目までに
とある長さ 5 のパターンが登場する確率は、1/2^5 です。
それを k=1~6 で合計すると 6/2^5 = 3/16。
この値は、パターンの内容によりません。

それが質問文中の値のように小さくなってしまう理由は、
上記の計算では、一度の 10 回投げでパターンが何度も
現れる場合を重複して数えてしまっているからです。
このぶんを減らさなければならない。

つまり、質問文で定義している「出やすさ」の確率は、
一度の 10 回投げで何度も登場しやすいパターンほど
値が小さくなるわけです。
なんだかなな話ですが、この事実が
問題の確率を計算する手がかりになります。

例えば、パターン 01011 は、パターンが一部重なる
ような登場ができません。重複して数えたのは
10 回投げの 1 回目から 5 回目までと
6 回目から 10 回目までの両方が 01011 になる場合だけで、
「出やすさ」の確率は 3/16 - 1/2^10 = 191/1024 です。
これが一番「出やすい」パターンのひとつです。

一方、パターン 00000 は、0 が続けて出る限り何度でも
一部が重なって登場します。0000000000 という 10 回投げ
の結果の中には 6 回も登場しています。
最長の 0 が 5+(n-1) 連なら n 回、00000 が登場するのです。
最長の 0 が m 連になる確率は、
m = 10 のとき 1/2^10,
m = 9 のとき 1/2^(9+1) + 1/2^(9+1),
m ≦ 8 のとき 1/2^(m+1) + ∑[k=2..10-m]{ 1/2^(m+2) } + 1/2^(m+1)
        = (13-m)/2^(m+2).
この確率で現れる出目を m-4 重に数えてしまっていた
ことになるので、それを補正した「出やすさ」の確率は
3/16 - ∑[m=5..8]{(11-m)/2^(m+2)}((m-4)-1) - {2/(2^10)}(5-1) - {1/2^10}(6-1)
= 3/16 - {8/(2^7)}・0 - {7/(2^8)}・1 - {6/(2^9)}・2
    - {5/(2^10)}・3 - {1/(2^9)}・4 - {1/(2^10)}・5
= 112/2^10 = 56/512.
これが一番「出にくい」パターンのひとつですね。

それ以外のパターンも、開始位置をずらして
自分自身とどのくらい重なることができるか? を考えれば
「出やすさ」の確率を計算することはできますよ。めんどくさいけど。
    • good
    • 0

とにかく機械的に求められれば良いのなら



n桁目からパターンxになってる確率をp(n;x)
n桁目からとm桁目からパターンxになる確率をp(n,m;x)
などとすると

パターンxを含む確率=
p(1;x)+…+p(6,x)
-p(1,2;x)-p(1,3;x)-…-p(5,6;x)
+p(1,2,3;x)+…
-p(1,2,3,4;x)-…
+p(1,2,3,4,5;x)+…
-p(1,2,3,4,5,6;x)
を計算すれば良い。

x=01011の方は
p(1;01011)=…=p(6:01011)=1/32
p(1,6:01011)=p(1,0101101011)=1/1024
以外は全部0なので191/1024になる事を確認するのは難しくはないはず。

x=00000の方は全ての項が0ではないので、ちょっと大変ではあるけど、
各項はp(1,3;00000)=p(1,0000000)=1/2^7などと計算できるので、頑張れば計算はできるはず。
    • good
    • 0

特定パターンは1個のコインと考えて、ご質問のケースでは全体で5回のコイントスの前後も含めた6ポジションから選ばれるというように、場合の数(総数)を計算すれば良いです。



パターンが右から見たときと左から見たときに区別できないような対称パターンのときは、確率を2倍にする必要があります。
    • good
    • 0

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