• 検索結果がありません。

ランダムウォークと離散型擬似乱数

N/A
N/A
Protected

Academic year: 2021

シェア "ランダムウォークと離散型擬似乱数"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

ランダムウォークと離散型擬似乱数

樋口さぶろお

龍谷大学理工学部数理情報学科

計算科学☆実習

B L01(2016-04-11 Mon)

最終更新: Time-stamp: ”2016-05-23 Mon 10:25 JST hig”

今日の目標

ランダムウォークとは何か説明できる

C

srand(unsigned), rand()

関数の働きを説明 できる

C

で離散型擬似乱数を生成できる

http://hig3.net

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 1 / 20

(2)

はじめに この授業どんなのり?

ここまで来たよ

3

はじめに

この授業どんなのり

?

4

ランダムウォークと離散型擬似乱数 ランダムウォーク

擬似乱数

離散型擬似乱数の正しい

/

間違ったプログラム

(3)

はじめに この授業どんなのり?

科目の目標

もう少し正確にはシラバスを見てね

.

現象の確率モデルとは何か

,

確率過程とは何か

,

例をあげて説明で きる

.

確率モデルをオイラー表示とラグランジュ表示で表現し

,

量を計算す ることができる

.

確率モデルのシミュレーションのプログラムを作成し

,

その実行結果 から

,

表計算ソフトウェア・統計ソフトウェアを用いて統計的推定・

検定を行うことができる

...

チームで協力して問題を解決できる

,

効率よく質問できる

,

自分の学 習方法を改善できる

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 3 / 20

(4)

はじめに この授業どんなのり?

どんな人のための科目

?

計算科学☆実習

B

を履修した方がいい人

確率過程

(=

時間に依存する確率的現象

)

を知りたい人

微分方程式

(

決定論的モデル

)

の見ていない

,

残り半分の世界を確率 論的モデルで見たい人

モデル駆動の研究の見ていない

,

データ駆動の研究の世界を見たい人 偶然性のあるゲームを仕組みからわかって作りたい人

確率を

,

プログラム作成の中で実感したい人 ランダムアルゴリズムが使えるようになりたい人 コンピュータでデータの解析ができるようになりたい人 計算科学☆実習

B

を履修しない方がいい人

(

単位をとっているかどうかに関わらず

)

確率統計☆演習

I,

数値計算

法及び実習がぜんぜんわかってない感がある人

,

この機会にわかろう

という決意のない人

(5)

はじめに この授業どんなのり?

科目ののり 注文が多くめんどくさい科目です…

成績計算 科目の成績

100

ピーナッツは

25

ピーナッツ

:

平常点

.

毎回授業での

quiz,

授業時間外の予習復習

.

だいたい

10

講義の

Quiz

ほか

だいたい

15

実習時間内の課題提出

TA

の現場チェックでなく教員の提 出プログラムチェック. TA は間違いの発見に努めますが, 「それで

OK」とは言いません.

50

ピーナッツ

:

プチテスト群

15

紙の非参照プチテスト

35=7+14+14

プログラミング実技の非参照プチテスト

25

ピーナッツ

:

定期試験期間内の紙のファイナルトライアル

(

外部記 憶あり

)

その他追加ピーナッツ

.

その時に説明

.

ファイナルトライアル時点で

35

ピーナッツ未満の人は

,

本試験は

(

平均点 を上げるために

)

参加をおすすめしますが

,

追試験は実施しません

.

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 5 / 20

(6)

はじめに この授業どんなのり?

欠席届ピーナッツ的に考慮されたい場合は

,

専用用紙に事情を説明する書 類を貼って

,

授業前後各

5

分に提出

(

事前事後とも可

.

ファイナルトライ アルが締切

).

欠席に事前連絡は不要

.

何回欠席しても期末試験受験資格 を失うことはありません

.

資料授業で配布

.

授業後に欲しい人は

http://hig3.net

から各自ダウン

ロード

. 1-503

前のレターボックスに残ってることも

.

担当者ののり

なまえ

:

樋口さぶろお

hig-compsci

へや

: 1-502

オフィスアワー

:

月昼

(1-502),

6(1-502/1-539).

訪問歓迎な時間

:

月木金昼

(1-502, Math

ラウンジに行ってることも

).

お弁当持参歓

.

お湯あげます

.

Web

ページ

: http://hig3.net

実習の指示や

,

スケジュールもここ

から

.

(7)

はじめに この授業どんなのり?

科目の

1

週間のタイムライン

1

月昼 樋口オフィスアワー

(1-502)

2

15:20

予習復習問題

(e

ラーニング

)

解答

1

回のみ

3

4

講義

(7-002), quiz(

参照あり

)

4

このころ実習のタスク公開

5

23:55

先週の課題の一部の提出締切

6

13:35

予習復習問題

(e

ラーニング

)

解答何回でも

7

3

実習

(1-609), quiz

返却

8

23:55

今週の課題の一部の提出締切

実習室に行ったら

,http://hig3.net

計算科学☆実習

B

.

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 7 / 20

(8)

ランダムウォークと離散型擬似乱数 ランダムウォーク

ここまで来たよ

3

はじめに

この授業どんなのり

?

4

ランダムウォークと離散型擬似乱数 ランダムウォーク

擬似乱数

離散型擬似乱数の正しい

/

間違ったプログラム

(9)

ランダムウォークと離散型擬似乱数 ランダムウォーク

C

言語で数列の計算

数値計算法

数列

{X(t)},

時刻

t= 0,1,2, . . ..

初項

X(0) =a,

漸化式

X(t+ 1) =X(t) +R(t+ 1).

階差数列

R(t+ 1) =

定数 なら

X(t)

は等差数列

. C

言語で数列を書くと

?

1 i n t x ;

2 i n t r ;

3 i n t t ;

4 5 t =0;

6 x=初 項;

7

8 p r i n t f ( ”%d\n ” , t , x ) ;

9 f o r( t =0; t<100; t ++){

10 r =(階 差 数 列 の 一 般 項 R(t+ 1)) ;

11 x=x+r ; / X(t+ 1) を 求 め た /

12 p r i n t f ( ”%d,%d\n ” , t +1 , x ) ;

13 }

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 9 / 20

(10)

ランダムウォークと離散型擬似乱数 ランダムウォーク

ランダムウォーク

(

確率過程の例

)

ランダムウォーク

階差数列

R(t+ 1)

確率変数

現象の数学A,確率統計II

つまり

R(t+ 1)

がランダム

.

例えば

,

こんな場合

.

R(t+ 1)

確率

+1 p

−1 q(= 1−p)

等差数列

vs

ランダムウォーク

20 40 60 80 100 t

-6 -4 -2 2 4 6 x

ランダムウォークってどんな ところに出てくる

?

株価変動

ブラウン運動 ゲーム

モンテカルロ数値積分

=

ランダムアルゴリズム

の典型

(11)

ランダムウォークと離散型擬似乱数 擬似乱数

ここまで来たよ

3

はじめに

この授業どんなのり

?

4

ランダムウォークと離散型擬似乱数 ランダムウォーク

擬似乱数

離散型擬似乱数の正しい

/

間違ったプログラム

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 11 / 20

(12)

ランダムウォークと離散型擬似乱数 擬似乱数

離散型擬似乱数列の生成

モンテカルロ法

確率的

/

決定的な量を計算するのに

,

確率変数の標本抽出を実際にコン ピュータで乱数

(random number)

を使って行う方法

乱数列

=

ある確率変数の標本になってる数列

=

ランダムな数列

R(t+ 1)

C

言語でどう書く

?

1 #i n c l u d e <s t d l i b . h>

2

3 / 0以 上 RAND MAX 以 下 の 正 の 整 数 を ラ ン ダ ム に 選 ん で 返 す 関 数 /

4 i n t r a n d ( ) ;

5 / そ の 初 期 化 /

6 v o i d s r a n d (u n s i g n e d s e e d ) ;

RAND MAX

M PI

みたいな定数

.

値は処理系依存

.

例えば

2311.

今の目的としては

,

得られる値は

,+1,1

だけでいいんだけどな〜

偶数奇数で ± 1 にわけるのは「実は」危険

(13)

ランダムウォークと離散型擬似乱数 擬似乱数

この授業の約束

(+

世の中の習慣

). rand()

を生で使わず

,

いったん

[0,1)

一様乱数にして使う

. double getuniform()

1 / [ 0 , 1 ) 一 様 乱 数 /

2 d o u b l e g e t u n i f o r m ( ){

3 r e t u r n r a n d ( ) / ( 1 . 0 +RAND MAX ) ;

4 }

getuniform()

の性質

値域

[0,1). 0getuniform()<1.

(getuniform()< r

となる確率

)=r. (0≤r 1)

1

0 2 3 RAND_MAX

0 0

rand()

getuniform()

1

連続型確率変数みたいなもの

.

確率密度関数

f(x) =

{

1 (0≤x <1)

0 (

) .

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 13 / 20

(14)

ランダムウォークと離散型擬似乱数 擬似乱数

計算機の頭の中どうなってんの

?

擬似乱数列

=‘

ほぼ

ランダムな数列

(15)

ランダムウォークと離散型擬似乱数 擬似乱数

ある確率で

±1

を返したい

!

1 / 引 数y[ 0 , 1 )一 様 乱 数 な ら, g e t r a n d o m の 返 り 値 は

2 確 率1 / 4−1 , 確 率3 / 4+1∗/

3 i n t g e t r a n d o m (d o u b l e y ){

4 i f( y< 0 . 2 5 ){

5 r e t u r n −1;

6 } e l s e {

7 r e t u r n +1;

8 }

9 }

0.5 1.0 1.5 2.0 y

-1 1 r

r=getrandom(getuniform());

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 15 / 20

(16)

ランダムウォークと離散型擬似乱数 離散型擬似乱数の正しい/間違ったプログラム

ここまで来たよ

3

はじめに

この授業どんなのり

?

4

ランダムウォークと離散型擬似乱数 ランダムウォーク

擬似乱数

離散型擬似乱数の正しい

/

間違ったプログラム

(17)

ランダムウォークと離散型擬似乱数 離散型擬似乱数の正しい/間違ったプログラム

ソースコード1:乱数

1 /

2 r a n d 1 . c−− −1 o r +1 を 確 率1 / 4 , 3/4で 選 ぶ 乱 数 3 Timestamp : ”20130409 Tue 1 8 : 5 7 JST h i g ”

4 ∗/

5 # d e f i n e _ C R T _ S E C U R E _ N O _ W A R N I N G S // VC++2008用 お ま じ な い 6 # i n c l u d e < s t d i o . h >

7 # i n c l u d e < s t d l i b . h > /∗s r a n d ( ) , r a n d ( ) を 使 う の に 必 要 ∗/

8

9 /∗ 関 数 プ ロ ト タ イ プ 宣 言∗/

10 d o u b l e g e t u n i f o r m ();

11 int g e t r a n d o m ( d o u b l e y );

12

13 int m a i n (){

14 int s e e d ; /∗疑 似 乱 数 の シ ー ド ∗/

15 int t ; /∗カ ウ ン タ ∗/

16 int t m a x = 1 0 0 ; /∗疑 似 乱 数 を 得 る 回 数 ∗/

17

18 s c a n f ( " % d " ,& s e e d );

19 s r a n d ( s e e d ); /∗ シ ー ド の 設 定∗/

20 for ( t =0; t < t m a x ; t + + ) {

21 /∗s r a n d ( s e e d ) ; ∗/ /∗ここに置くと? ∗/

22 p r i n t f ( " % f \ n " , g e t r a n d o m ( g e t u n i f o r m ( ) ) ;

23 }

24 r e t u r n 0;

25 } 26

27 /∗ ∗ [ 0 , 1 ) 一 様 疑 似 乱 数 を 返 す ∗/

28 d o u b l e g e t u n i f o r m (){

29 r e t u r n r a n d ( ) / ( R A N D _ M A X + 1 . 0 ) ; 30 }

31

32 /∗ ∗ −1 o r +1 を 確 率1 / 4 , 3/4で 返 す 乱 数 ∗/

33 int g e t r a n d o m ( d o u b l e y ){

34 if ( y < 0 . 2 5 ){

35 r e t u r n -1;

36 } e l s e {

37 r e t u r n +1;

38 }

39 }

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 17 / 20

(18)

ランダムウォークと離散型擬似乱数 離散型擬似乱数の正しい/間違ったプログラム

L01-Q1

Quiz(擬似乱数の使いかた)

引数

y

として

[0,1)

一様乱数が与えられたとき

,

下の確率で値を返す

double getrandom(double y)

,

サンプルプログラムを参考に書こう

.

返り値 確率

0.6 0.7 0.4 0.3

(19)

ランダムウォークと離散型擬似乱数 離散型擬似乱数の正しい/間違ったプログラム

L01-Q2

Quiz(rand()

の振る舞い

)

次のプログラムで

, A

が出力され る確率は

?

1 i f( g e t u n i f o r m ( )

2 ==g e t u n i f o r m ( ) ){

3 p r i n t f ( ”A\n ” ) ;

4 }

1 0

2 0

に近い

3 1/2

4 1/2

くらい

5 1

に近い

6 1

L01-Q3

Quiz(rand()

の振る舞い

)

次のプログラムで

, A

が出力され る確率は

?

1 i f( g e t u n i f o r m ( ) < 0 . 1 ){

2 i f( g e t u n i f o r m ( ) < 0 . 2 ){

3 p r i n t f ( ”A\n ” ) ;

4 }

5 }

1 0

2 0.02

3 0.1

4 0.2

5 0.3

6 1

樋口さぶろお (数理情報学科) L01ランダムウォークと離散型擬似乱数 計算科学☆実習B(2016) 19 / 20

(20)

ランダムウォークと離散型擬似乱数 離散型擬似乱数の正しい/間違ったプログラム

L01-Q4

Quiz(擬似乱数の使いかた)

引数

y

として

[0,1)

一様乱数が与えられたとき

,

下の確率で値を返す

int getrandom(double y)

,

サンプルプログラムを参考に書こう

.

返り値 確率

−1 1/3 0 1/2 +1 1/6

Hint: getrandom()

のグラフは

,

なぜ

,

どういう形になるべき

?

予習復習問題次回の実習までの間には

,

まだ予習復習問題はありません

. https://manaba.ryukoku.ac.jp

マイページの下の方に

manaba

出席カード 提出

今日は「匿名で提出する」にチェック

.

自由 記述に学籍番号書いてね

.

今週水の実習にはイヤフォン持参

(

必須

)

参照

関連したドキュメント

定可能性は大前提とした上で、どの程度の時間で、どの程度のメモリを用いれば計

実習と共に教材教具論のような実践的分野の重要性は高い。教材開発という実践的な形で、教員養

目標を、子どもと教師のオリエンテーションでいくつかの文節に分け」、学習課題としている。例

個別の事情等もあり提出を断念したケースがある。また、提案書を提出はしたものの、ニ

上記⑴により期限内に意見を提出した利害関係者から追加意見書の提出の申出があり、やむ

※ 2 既に提出しており、記載内容に変更がない場合は添付不要

※各事業所が提出した地球温暖化対策計画書の平成28年度の排出実績が第二計画

問13 あなたの職種を教えてください? 