18
第7回 乱数 1

第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

第7回乱数  

1

Page 2: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

確率モデル  

•  シミュレーションには,これまでに用いて来た決定論的な方法のほかに確率的な方法がある.  

•  確率的な方法を用いてシミュレーションを行う場合,確率モデルを作成し,それを何度も実行して統計を取ることが多い.  

•  確率モデルを実際に計算するためには,コンピュータで「でたらめな数」を用いる.  

•  この「でたらめな数」を「乱数(random  number)という.  

Page 3: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

一様分布乱数

•  与えられた領域 [a,b) において,確率密度関数が一定である乱数を一様分布乱数という.

•  確率密度関数は以下のように定義できる.

•  平均と分散は以下の通り.

•  区間 [0,1)  で定義された一様分布乱数がすべての計算のもとになる.

Page 4: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

Excel  の一様分布乱数

•  Excel  では RAND()  を用いると一様分布乱数を発生させることができる.

•  右のヒストグラムは 10000  の RAND()  の結果を0.05間隔で数えた結果.

Page 5: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

Mathema>ca  の一様分布乱数

•  Mathema>ca  では RandomReal[]  を用いると一様分布乱数を発生させることができる.

•  右は Excel  と同様に頻度分布をとった結果.(V5.2  の場合.V6の場合には Histgrams  パッケージを読み込む)  

Page 6: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

今日の演習課題

•  Excel  のワークシートを用いて,今回紹介する乱数を実現してみよう(余裕がある人は Mathema>ca  も同時にチャレンジ).  

•  発生した乱数の平均や分散や標準偏差を計算しよう.  

•  上の計算結果は自分の予想と一致しているのかを確認しよう.予想が当たっても外れてもその理由を考えてみること.  

•  全部実現できたら,いろいろな乱数の見本ブックができるはず.  

6

Page 7: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

区間 [0,1)  以外の一様分布乱数

•  区間 [a,  b)  における一様分布乱数は,区間[0,1)における一様分布乱数に対して, (b-­‐a)  倍して a  を加える.  

•  たとえば [3,5)  の場合,  – Mathema>ca  では RandomReal[  {3,5}]  

– Excel  では Rand()*(5-­‐3)+3  

7

Page 8: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

整数の発生

•  Mathema>ca  では整数を発生させる方法(RandomInteger  関数)があるが, Excel  にはない.そこで,一般に通用する整数の発生方法を二種類考えてみる.  – 方法1:整数の範囲倍して丸める.  – 方法2:条件分岐を用いる.  

•  Mathema>ca  で直接発生させる場合.  – V5.2  以前 Random[Integer,  {最小値,最大値}]  – V6  以降 RandomInteger[{最小値,最大値}]  

8

Page 9: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

方法1:整数の範囲倍して丸める

•  一様分布乱数に対して,発生させたい整数の範囲を乗じて小数部分を切り捨てる.  

•  例えば 4  から 9  までの数を発生させたい場合.  – Mathema>ca  では IntegerPart[6  RandomReal[]+4]  

– Excel  では ROUNDDOWN(6*RAND(),0)+4  

•  数値の増分が1以外の場合はどうする?(例えば -­‐1  と 1  を発生させたい場合など)

9

Page 10: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

方法2:条件分岐を用いる

•  区間 [0,1)  を発生させたい整数の範囲で分割して,個々の範囲に整数を割り当てる.一様分布乱数を発生させて,どの範囲に入ったかで整数を選ぶ.  

•  例えば 3  から 5  までの数を発生させたい場合.  – Mathema>ca  では If[(a=Random[])<1/3,  3,  If[a<2/3,  4,  5]]  

–  Excel  ではふたつのセルを使う(自分で考えてみること)

10

Page 11: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

任意の確率密度関数を実現するには

•  一様分布乱数があると,それを用いて任意の確率密度関数についての乱数を実現することができる.

•  一様乱数を   とし,関数     によって生成される値の確率密度関数を     とおく.     が与えられたとき,     は,以下の式より     の確率分布関数     を用いて,        となる.

Page 12: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

正規分布乱数

•  確率密度関数が平均 m  と分散 σ2  を用いて以下の式で特徴付けられる分布.

•  前の結果を利用すると正規分布関数を密度関数にもつ乱数を使うことができる.  

•   Excel  の場合には NORMINV  関数を用いる.  •   Mathema>ca  の場合にはもとの確率密度関数を与えればよいのでより簡単に行える.

Page 13: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

正規分布乱数の実現

•  平均 5  分散 10  の正規分布に従う乱数を発生させる.  

•  Excel  の場合  – NORMINV[RAND(),5,Sqrt[10]]  

•  Mathema>ca  の場合  –  RandomReal[NormalDistribu>on[5,Sqrt[10]]]  

13

Page 14: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

少し考えてしまう分布

•  以下の分布について Mathema>ca  の場合の実現方法を紹介する.  – 正方形格子点に一様分布する.  – 円周上に一様分布する.  – 円の中に一様分布する.  

14

Page 15: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

格子点

•  50×50の格子点上に,300  個の点を発生させる.  

•  Mathema>ca  では RandomInteger  で可能.

15

Page 16: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

円周上

•  半径 2  の円周上に一様分布する点を50個発生させる.

16

Page 17: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

円の内部

•  半径 3  の円の内部に一様分布する点の発生.  

•  どうやら捨てている点があるようだ.もっと良い方法はないだろうか?

17

Page 18: 第7回 乱数 - Toyo Universityendeavor.eng.toyo.ac.jp/~yoshino/lecture/ex_com... · 2020-03-02 · 任意の確率密度関数を実現するには • 一様分布乱数があると,それを用いて任意の

その他の分布

•  以下の分布を自分で作ることができますか?  – 点 (4,3)  を中心に x  方向と y  方向の分散がそれぞれ 2 と 4  になるように正規分布させる.  

– 一辺2の正方形内に点を分布させる.ただし,半分から上のほうが点の密度が2倍になるようにする.  

– 球の表面に一様に点を分布させる.  – 球の中に一様分布させる.  

18