確率と統計​/確率の基礎

Unity学習帳2冊目確率と統計 / 確率の基礎

確率の基礎 anchor.png

確率を求める事は「正確に物事の数を数え上げ、対象となる全体を1として、その比を求める」計算となる
その計算の際の「数え上げ方」に注目し、実例と共に様々なケースをここに書いて行く事にする

Page Top

case.1 anchor.png

参考文献「数学ガール 乱択アルゴリズム」のP5、「1.2.1 2枚のコイン」より、この問題を3枚のコインに変更して再考してみます

<問題:3枚のコイン投げ>
アリスは五百円玉、百円玉、十円玉を1枚ずつ投げてから言った。
「少なくとも1枚は<おもて>が出ました」
この時、すべてのコインが<おもて>になっている確率はいくらか。

まず、そんなに規模が大きな問題ではないので樹形図を書いて全体を眺めてみる。3枚コインを投げるとこうなる

  • \(0,1,2,\aleph\)は"特別な数字(哲学的、原始的な数字)"なので最小の規模を考えるなら\(3\)からが良い
  • 樹形図は見易く<表>が"H"(head)。<裏>が"T"(tail)と略して書く。英単語の頭文字などを利用して樹形図を書く際の労力を省く
    tree1.png
    上から樹の経路をたどって「出来事として発生する事象」のパターンを抜き出してみる

HHH
HHT
HTH
HTT
THH
THT
TTH
TTT

の全部で8種の事象、パターンがある事がわかった
この中から

全て表が出たパターン
2枚表が出たパターン
1枚表が出たパターン
0枚表が出たパターン=全て裏が出たパターン

に分ける。これは二項定理の
\({ \left( H+T \right) }^{ 3 }\quad \\ =\quad _{ 3 }{ C }_{ 0 }{ H }^{ 3 }T^{ 0 }+_{ 3 }{ C }_{ 1 }{ H }^{ 2 }T^{ 1 }+_{ 3 }{ C }_{ 2 }{ H }^{ 1 }T^{ 2 }+_{ 3 }{ C }_{ 3 }{ H }^{ 0 }T^{ 3 }\\ =\quad \left( \begin{matrix} 3 \\ 0 \end{matrix} \right) { H }^{ 3 }+\left( \begin{matrix} 3 \\ 1 \end{matrix} \right) { H }^{ 2 }T^{ 1 }+\left( \begin{matrix} 3 \\ 2 \end{matrix} \right) { H }^{ 1 }T^{ 2 }+\left( \begin{matrix} 3 \\ 3 \end{matrix} \right) T^{ 3 }\quad \)
この右辺の掛け合わせた係数部分を利用する事により各パターン数を抽出できる事を利用する

HHH
HHT
HTH
HTT
THH
THT
TTH
TTT

パターン数
全て表が出たパターンHHH\({ _{ 3 }{ C }_{ 0 } }=1\)
2枚表が出たパターンHHT,HTH,THH\({ _{ 3 }{ C }_{ 1 } }=\frac { 3 }{ 1 } =3\)
1枚表が出たパターンHTT,THT,TTH\({ _{ 3 }{ C }_{ 2 } }=\frac { 3\times 2 }{ 1\times 2 } =3\)
全て裏が出たパターンTTT\({ _{ 3 }{ C }_{ 3 } }=1\)

となる。この全パターン数を求める式は

\(H=1,T=1として\\ { \left( 1+1 \right) }^{ 3 }\quad =\quad _{ 3 }{ C }_{ 0 }{ 1 }^{ 3 }1^{ 0 }+_{ 3 }{ C }_{ 1 }1^{ 2 }1^{ 1 }+_{ 3 }{ C }_{ 2 }1^{ 1 }1^{ 2 }+_{ 3 }{ C }_{ 3 }1^{ 0 }1^{ 3 }\\ { 2 }^{ 3 }\quad =\quad { _{ 3 }{ C }_{ 0 } }+{ _{ 3 }{ C }_{ 1 } }+{ _{ 3 }{ C }_{ 2 } }+{ _{ 3 }{ C }_{ 3 }\quad }=\quad 1+3+3+1\quad =\quad 8 \)

となる。補足として二項分布的に考えると以下になる。以下の式の各項の値がそのまま確率になっている事から、二項定理の式が絶大な効果を持っている式である事が理解できる。その力の源泉は平均の値にあり、その式自体が表面上の計算式の影に隠れている事に注目する必要がある

\(H=0.5,T=0.5として\\ { \left( 0.5+0.5 \right) }^{ 3 }\quad =\quad _{ 3 }{ C }_{ 0 }0.5^{ 3 }0.5^{ 0 }+_{ 3 }{ C }_{ 1 }0.5^{ 2 }0.5^{ 1 }+_{ 3 }{ C }_{ 2 }0.5^{ 1 }0.5^{ 2 }+_{ 3 }{ C }_{ 3 }0.5^{ 0 }0.5^{ 3 }\\ 1^{ 3 }\quad =\quad \underbrace { { _{ 3 }{ C }_{ 0 } }\frac { 1 }{ 8 } +{ _{ 3 }{ C }_{ 1 } }\frac { 1 }{ 8 } +{ _{ 3 }{ C }_{ 2 } }\frac { 1 }{ 8 } +{ _{ 3 }{ C }_{ 3 }\frac { 1 }{ 8 } \quad } }_{ ここで各項に1/2の3乗が発生している事が突出してこの公式をスゴくさせている } =\quad \frac { 1 }{ 8 } +\frac { 3 }{ 8 } +\frac { 3 }{ 8 } +\frac { 1 }{ 8 } \quad =\quad 1\)

仮にコインが歪な形をしていて表が60%、裏が40%の確率で出る場合の式は以下になる
このように有理数で考えると分りやすい

\(H=0.6=\frac { 3 }{ 5 } ,T=0.4=\frac { 2 }{ 5 } として\\ { \left( 0.6+0.4 \right) }^{ 3 }\quad =\quad _{ 3 }{ C }_{ 0 }\left( \frac { 3 }{ 5 } \right) ^{ 3 }\left( \frac { 2 }{ 5 } \right) ^{ 0 }+_{ 3 }{ C }_{ 1 }\left( \frac { 3 }{ 5 } \right) ^{ 2 }\left( \frac { 2 }{ 5 } \right) ^{ 1 }+_{ 3 }{ C }_{ 2 }\left( \frac { 3 }{ 5 } \right) ^{ 1 }\left( \frac { 2 }{ 5 } \right) ^{ 2 }+_{ 3 }{ C }_{ 3 }\left( \frac { 3 }{ 5 } \right) ^{ 0 }\left( \frac { 2 }{ 5 } \right) ^{ 3 }\\ 1^{ 3 }\quad =\quad \underbrace { { _{ 3 }{ C }_{ 0 } }\frac { 27 }{ 125 } +{ _{ 3 }{ C }_{ 1 } }\frac { 18 }{ 125 } +{ _{ 3 }{ C }_{ 2 } }\frac { 12 }{ 125 } +{ _{ 3 }{ C }_{ 3 }\frac { 8 }{ 125 } \quad } }_{ ここで各項に\frac { 1 }{ 5 } の3乗が発生している事が突出してこの公式をスゴくさせている } =\quad \frac { 27 }{ 125 } +\frac { 54 }{ 125 } +\frac { 36 }{ 125 } +\frac { 8 }{ 125 } \quad =\quad 1\)

さて、ここで問題をもう一度読み返すと

<問題:3枚のコイン投げ>
アリスは五百円玉、百円玉、十円玉を1枚ずつ投げてから言った。
「少なくとも1枚は<おもて>が出ました」
この時、すべてのコインが<おもて>になっている確率はいくらか。

「少なくとも1枚は<おもて>が出ました」という事は「全て裏が出たパターン」は全体1としての内容に含めては駄目な事に気が付く
従って確率を求める式はこうなる

\(\frac { 全て表が出た }{ 全て表が出た+2枚表が出た+1枚表が出た } \quad =\quad \frac { { _{ 3 }{ C }_{ 0 } } }{ { _{ 3 }{ C }_{ 0 } }+{ _{ 3 }{ C }_{ 1 } }+{ _{ 3 }{ C }_{ 2 } } } \quad =\quad \frac { 1 }{ 1+3+3 } \quad =\quad \frac { 1 }{ 7 } \quad =\quad 14.28...\)%

このひとつの式から確率を求める計算は非常に難しい「本当に問題と数え方を理解していないと計算ができない」事がよくわかる
では、この求めた値が正当な値であるかunityを使って検証し、その正しさを体感してみる

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
 
 
 
-
|
-
!
-
-
|
|
|
!
|
!
|
-
!
-
|
|
|
-
|
|
|
!
|
!
|
-
!
-
|
|
-
|
!
|
!
|
-
!
-
|
|
!
|
-
!
-
|
|
|
|
|
-
|
|
!
|
!
|
!
using UnityEngine;
using System.Collections;
 
public class Test5 : MonoBehaviour
{
 
    //求めた確率の値が正しい事を検証する
    void Start()
    {
        //コインを3回投げて
        //「表が1枚以上出ている場合の数」を母数に
        //「表が3枚出ている場合の数」を分子にして
        //確率を10万回のサンプリングで求めている
        print("シミュレーション結果 : " + Pr(100000));
        print("二項定理の公式利用 : " + ((float)nCr(3, 0) / (float)(nCr(3, 0) + nCr(3, 1) + nCr(3, 2))));
    }
 
    //指定回数サンプリング後、確率を返す
    private float Pr(int Sampling)
    {
        float deno = 0;
        float nume = 0;
        for (int i = 0; i < Sampling; i++)
        {
            int coin = GetHead(0.5f, 3);
            if (coin >= 1) deno++;          //「表が1枚以上出ている場合の数」を母数に
            if (coin == 3) nume++;          //「表が3枚出ている場合の数」を分子にして
        }
        return (float)nume / (float)deno;    //確率を返す
    }
 
    //指定した「表の確率」で試行回数コイントスし表が出た回数を返す
    private int GetHead(float headPercent, int tossCount)
    {
        int head = 0;
        for (int i = 0; i < tossCount; i++)
        {
            if (TossCoin(headPercent) == true) head++;
        }
        return head;
    }
 
    //指定した表の確率でコイントスして表が出たらtrue、裏でfalseを返す
    public bool TossCoin(float headPercent)
    {
        if (Random.value < headPercent) return true;
        return false;
    }
 
    //組合せ計算
    public int nCr(int n, int r)
    {
        if (n == r || r == 0) return 1;
 
        int deno = n;
        int nume = 1;
        for (int i = 2; i <= r; n--, i++)
        {
            deno *= (n - 1);
            nume *= i;
        }
        return deno / nume;
    }
 
}

何度か実行してみて求めた値とシミュレーションの値が近似する事を確かめて欲しい



添付ファイル:
filetree1.png 20件 [詳細]

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Last-modified: 2016-05-25 (水) 21:32:47 (JST) (2898d) by osinko