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

ランダムウォークと擬似乱数生成

N/A
N/A
Protected

Academic year: 2021

シェア "ランダムウォークと擬似乱数生成"

Copied!
20
0
0

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

全文

(1)

.

...

ランダムウォークと擬似乱数生成

樋口さぶろお

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

計算科学☆演習

II L01(2013-04-10 Wed)

今日の目標

.

..

1 ランダムウォークとは何か説明できるようにな ろう

.

2

.. C

で擬似乱数を使えるようになろう

.

http://hig3.net

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 1 / 20

(2)

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

ここまで来たよ

1 ...

はじめに

この授業どんなのり

?

2 ...

ランダムウォーク ランダムウォーク 擬似乱数

擬似乱数の正しい

/

間違ったプログラム

(3)

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

講義

+

演習の目標

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

.

確率的な現象を数式で解析できる

確率的な現象をシミュレートするプログラムが作れ

,

その結果をコン ピュータで解析できる

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

,

効率よく質問できる

,

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

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 3 / 20

(4)

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

計算科学

II(

講義

)

ののり 必ず計算科学演習

II

と同時に履修してね

.

成績計算注文の多い科目です…科目の成績

100

ピーナッツは

10

ピーナッツ

:

毎回授業での

quiz

10

ピーナッツ

:

授業時間外の予習復習

30

ピーナッツ

:

プチテスト

50

ピーナッツ

:

ファイナルトライアル その他追加ピーナッツ

.

その時に説明

.

資料授業で配布

.

授業後に欲しい人は

http://hig3.net

から各自ダウン

ロード

. 1-503

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

.

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

,

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

,

授業前後各

5

分に提出

(

事前事後とも可

.

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

).

欠席に事前連絡は不要

.

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

.

(5)

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

計算科学演習

II

ののり 必ず計算科学

II

と同時に履修してね

.

成績計算注文の多い科目です…科目の成績

100

ピーナッツは

20

ピーナッツ

:

毎回の課題

80

ピーナッツ

:

プチテスト

x3=15,30,35

実習室に行ったら

, http://hig3.net

計算科学☆演習

II

.

別紙も 参照

.

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 5 / 20

(6)

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

1

週間のタイムライン

.

..

1 水午前まで 予習復習問題

(e

ラーニング

or

携帯

) .

2

..

3

計算科学

II(7-002), quiz .

..

3 金朝まで 予習復習問題

(e

ラーニング

or

携帯

) .

..

4

2

計算科学演習

II(1-619), quiz

返却

.

5

..

金昼 休憩スペース

(1-614) .

..

6

3

総合演習

(1-619) .

..

7

4

オフィスアワー

(1-619)

(7)

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

担当者ののり なまえ

:

樋口さぶろお

へや

: 1-502

オフィスアワー

:

6(1-539),

4(1-619).

訪問歓迎な時間

:

月火木

.

お弁当持参可

.

お湯あげます

.

Web

ページ

: http://hig3.net

演習の指示や

,

スケジュールもここ から

.

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 7 / 20

(8)

ランダムウォーク ランダムウォーク

ここまで来たよ

1 ...

はじめに

この授業どんなのり

?

2 ...

ランダムウォーク ランダムウォーク 擬似乱数

擬似乱数の正しい

/

間違ったプログラム

(9)

ランダムウォーク ランダムウォーク

C

言語で数列の計算

現象の数学A

数列

{ X t } ,

時刻

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

初項

X 0 = 0

漸化式

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

x=

初 項

;

5

f o r ( / t

こ こ 省 略

/ ) {

6

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

7

r =(

階 差 数 列 の 一 般 項

R

t+1

) ;

8

x=x+r ;

9

}

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 9 / 20

(10)

ランダムウォーク ランダムウォーク

.

ランダムウォーク

..

...

ランダムウォーク

階差数列

R t+1

確率変数

つまり

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)

ランダムウォーク ランダムウォーク

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

?

株価変動 ブラウン運動 ゲーム

数値積分

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 11 / 20

(12)

ランダムウォーク 擬似乱数

ここまで来たよ

1 ...

はじめに

この授業どんなのり

?

2 ...

ランダムウォーク ランダムウォーク 擬似乱数

擬似乱数の正しい

/

間違ったプログラム

(13)

ランダムウォーク 擬似乱数

擬似乱数列の生成 乱数列

=

ランダムな数列

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

/

そ の 初 期 化

/

7

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

RAND MAX

M PI

みたいな定数

.

値は処理系による

.

たとえば

2 31 1.

得られる値は

, +1, 1

だけでいいんだけどな〜

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

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 13 / 20

(14)

ランダムウォーク 擬似乱数

この授業の約束

(+

世の中に近い習慣

). 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

}

5

6

/ y

[ 0 , 1 )

一 様 乱 数 な ら

,

返 り 値 は 確 率

1 / 4

0 ,

確 率

3 / 4

1 /

7

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

8

i f ( y< 0 . 2 5 ) {

9

r e t u r n 0 ;

10

} e l s e {

11

r e t u r n 1 ;

12

}

13

}

. getuniform()

の性質

..

値域

’ 0 getuniform() < 1.

(15)

ランダムウォーク 擬似乱数

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

?

擬似乱数列

=‘

ほぼ

ランダムな数列

樋口さぶろお (数理情報学科) L01ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 15 / 20

(16)

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

ここまで来たよ

1 ...

はじめに

この授業どんなのり

?

2 ...

ランダムウォーク ランダムウォーク 擬似乱数

擬似乱数の正しい

/

間違ったプログラム

(17)

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

..

ソースコード1:乱数

1 /∗

2 r a n d 1 . c−− −1 o r +1 を 確 率1 / 4 , 3/4で 選 ぶ 乱 数 3 Time−stamp : ”2013−04−09 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ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 17 / 20

(18)

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

. Quiz(rand()

の振る舞い)

..

...

次のプログラムで

, A

が出力される確率は

?

1

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

2

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

3

} e l s e {

4

p r i n t f ( ”B\n ” ) ;

5

}

.

1

.. 0 . ..

2

0

に近い

. ..

3

1/2

.

4

.. 1/2

くらい

. ..

5

1

に近い

. ..

6

1

(19)

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

. 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ランダムウォークと擬似乱数生成 計算科学☆演習II(2013) 19 / 20

(20)

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

. Quiz(疑似乱数の使いかた) ..

...

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

,

引数

y

として

[0, 1)

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

,

下の確率で値を返す

int getrandom(double y)

を書こう

.

返り値 確率

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

予習復習問題

C-learning

は携帯を利用した学習システム

.

ネットマン提供

.

学生に

(

通信料以外

)

かかりません

. http://asp.c-learning.jp/s/

明日

C-learning

の小テスト公開するので金

11:00

までにやってね

.

C-learning

からのメールのドメイン

(

拒否除外設定用

)

@asp.c-learning.jp

C-learning

では

,

メールアドレスは運営会社に記録されますが

,

教員

参照

関連したドキュメント

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

自分ではおかしいと思って も、「自分の体は汚れてい るのではないか」「ひどい ことを周りの人にしたので

より早期の和解に加え,その計画はその他のいくつかの利益を提供してい

個人は,その社会生活関係において自己の自由意思にもとづいて契約をす