10: 2016-04-03 (日) 13:35:55 osinko |
11: 2016-04-06 (水) 01:32:55 osinko |
| + | TITLE:幾何分布 |
| + | #jsmath |
| #jsmath | | #jsmath |
| **幾何分布 [#z10603a7] | | **幾何分布 [#z10603a7] |
| | | |
| 幾何分布の定義は以下になる | | 幾何分布の定義は以下になる |
- | \(\begin{cases} q=(1-p) \\ { P }\left( x \right) =p{ q }^{ x-1 } \end{cases}\\ \\ P\quad 幾何分布関数\\ p\quad 命題が成功する確率\\ q\quad 命題が失敗する確率\\ x\quad 試行回数\) | + | |
| + | \(\begin{cases} q=(1-p) \\ { P }\left( x \right) =p{ q }^{ x-1 } \end{cases}\) |
| + | |
| + | \(p\quad 命題が成功する確率\) |
| + | \(q\quad 命題が失敗する確率\) |
| + | \(x\quad 試行回数\) |
| | | |
| このケースに幾何分布の定義を利用してみると \({ P }\left( x \right) \quad =\quad \left( \frac { 1 }{ 2 } \right) \cdot \left( \frac { 1 }{ 2 } \right) ^{ x-1 }\quad =\quad \frac { 1 }{ { 2 }^{ x } } \) となり | | このケースに幾何分布の定義を利用してみると \({ P }\left( x \right) \quad =\quad \left( \frac { 1 }{ 2 } \right) \cdot \left( \frac { 1 }{ 2 } \right) ^{ x-1 }\quad =\quad \frac { 1 }{ { 2 }^{ x } } \) となり |
| 実際にunityでこれを確認してみる | | 実際にunityでこれを確認してみる |
| | | |
- | <TODO> | + | #code(csharp){{ |
| + | using UnityEngine; |
| + | using System.Collections; |
| | | |
- | これは数学的帰納の視点で見ると、そのまま等比数列の定義 | + | public class sc4 : MonoBehaviour |
- | \({ a }_{ n }={ a }_{ 1 }{ r }^{ n-1 }\) と性質的に同一であることに気が付く必要がある。つまり無限等比級数の収束、極限が使えるという事だ | + | { |
| + | void Start() |
| + | { |
| + | int sampling = 1000000; //サンプリング回数 |
| + | float success = 0.9f; //成功確率 |
| + | int x = 5; //x回目で初めて成功する |
| | | |
- | **クーポン収集問題 [#d8522ef8] | + | int total = 0; |
- | | + | float result = 0; |
- | 資料: | + | for (int i = 0; i < sampling; i++) |
- | [[クーポンコレクター問題とは:http://dic.nicovideo.jp/a/%E3%82%AF%E3%83%BC%E3%83%9D%E3%83%B3%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%BF%E3%83%BC%E5%95%8F%E9%A1%8C]] | + | { |
- | [[カイ二乗分布:https://ja.wikipedia.org/wiki/%E3%82%AB%E3%82%A4%E4%BA%8C%E4%B9%97%E5%88%86%E5%B8%83]] | + | if( TrialAttack(success) ==x)total++; |
| + | } |
| + | result = (float)total / (float)sampling; //実験から確率の算出 |
| + | print(result); |
| + | } |
| | | |
- | ***メモ [#e0c48aaf] | + | //攻撃試行。無限回数攻撃。攻撃失敗の時点で、それまでの成功回数を返す |
- | マイクロソフトが2007年に残しているゲーム用のC#日本語資料。有用な情報なので一度目を通しておくことをお勧めします | + | int TrialAttack(float successs) |
| + | { |
| + | int i = 0; |
| + | while (true) |
| + | { |
| + | i++; |
| + | if (Attack(successs) == false) return i; |
| + | } |
| + | } |
| | | |
- | 資料:[[C#におけるデーター構造とオーダーに関する資料:http://xbox.create.msdn.com/ja-JP/education/catalog/article/data_structures]] | + | //攻撃判定。成功確率以内なら真を返す |
| + | public bool Attack(float successs) |
| + | { |
| + | if (Random.value < successs) return true; |
| + | return false; |
| + | } |
| + | } |
| + | }} |
| + | この結果を各値を変更しながら確かめると求めたとおりの答えが得られているのが確認できる |
| | | |
- | -Big O (ランダウの漸近記法) とC#のジェネリックについて理解 | + | #navi |