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

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
20
0
0

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

全文

(1)

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

樋口さぶろお

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

計算科学☆演習II L01(2014-04-11 Fri)

今日の目標

ランダムウォークとは何か説明できる Cで擬似一様乱数を生成できる

Cで離散的な値をとる乱数を生成できる

http://hig3.net

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

(2)

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

ここまで来たよ

1 はじめに

この授業どんなのり?

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

擬似乱数の正しい/間違ったプログラム

(3)

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

講義+演習の目標

もう少し正確にはシラバスを見てね. 確率的な現象を数式で解析できる

確率的な現象をシミュレートするプログラムが作れ,その結果をコン ピュータで解析できる

チームで協力して問題を解決できる,効率よく質問できる,自分の学 習方法を改善できる

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

(4)

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

計算科学II(講義)ののり 必ず計算科学演習IIと同時に履修してね.

成績計算注文の多い科目です…科目の成績100ピーナッツは 20ピーナッツ:毎回授業でのquiz,授業時間外の予習復習など 30ピーナッツ:プチテスト(樋口)

50ピーナッツ:ファイナルトライアル(國府) その他追加ピーナッツ. その時に説明.

ファイナルトライアル時点で10ピーナッツ未満の人は,本試験は(平均点 を上げるために)参加をおすすめしますが,追試験は実施しません. 資料授業で配布. 授業後に欲しい人はhttp://hig3.net から各自ダウン

ロード. 1-503前のレターボックスに残ってることも.

欠席届ピーナッツ的に考慮されたい場合は,専用用紙に事情を説明する書 類を貼って,授業前後各5分に提出(事前事後とも可. ファイナルトライ アルが締切). 欠席に事前連絡は不要. 何回欠席しても期末試験受験資格 を失うことはありません.

(5)

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

計算科学演習IIののり 必ず計算科学IIと同時に履修してね.

成績計算注文の多い科目です…科目の成績100ピーナッツは 20ピーナッツ:毎回の課題

80ピーナッツ:プチテストx3=15,30(樋口),35(國府)

実習室に行ったら,http://hig3.net→ 計算科学☆演習II. 別紙も 参照.

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

(6)

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

1週間のタイムライン(樋口)

1 11:05まで 予習復習問題E(eラーニング) 成績としては演習

2 2 計算科学II(7-002), quiz

3 5 樋口オフィスアワー(1-502)

4 13:35まで 予習復習問題L(eラーニング) 成績としては講義

5 3 計算科学演習II(1-609), quiz 返却

6 木昼 樋口オフィスアワー(1-608)

(7)

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

前半の担当者ののり

なまえ: 樋口さぶろお hig-compsci2@mail.ryukoku.ac.jp へや: 1-502

オフィスアワー: 木昼(1-608),5(1-502). 訪問歓迎な時間: 月火昼. お弁当持参歓迎. お湯あげます.

Webページ: http://hig3.net 演習の指示や,スケジュールもここ から.

講義の後半2/3,演習の後半1/3は國府宏枝先生が担当されます.

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

(8)

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

ここまで来たよ

1 はじめに

この授業どんなのり?

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

擬似乱数の正しい/間違ったプログラム

(9)

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

C言語で数列の計算

数値計算法

数列 {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(2014) 9 / 20

(10)

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

ランダムウォーク

ランダムウォーク 階差数列R(t+ 1)

確率変数

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

つまり R(t+ 1)がランダム. 例えば,こんな場合.

R(t+ 1) 確率

+1 p

−1 q(= 1p)

等差数列 vsランダムウォーク

20 40 60 80 100 t

-6 -4 -2 2 4 6 x

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

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

数値積分

(11)

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

ここまで来たよ

1 はじめに

この授業どんなのり?

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

擬似乱数の正しい/間違ったプログラム

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

(12)

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

擬似乱数列の生成 乱数列=ランダムな数列

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 MAXM PIみたいな定数. 値は処理系による. たとえば2311.

得られる値は,+1,1だけでいいんだけどな〜

偶数奇数で

±1

にわけるのは「実は」危険

(13)

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

この授業の約束(+世の中の習慣). rand()を生で使わず,いったん[0,1) 一様乱数(01の間の実数を同じ「確率」で返す)にして使う. 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()< p となる確率)=p.

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

(14)

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

計算機の頭の中どうなってんの? 擬似乱数列=‘ほぼランダムな数列

(15)

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

ある確率で ±1 を返したい!

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

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

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

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

(16)

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

ここまで来たよ

1 はじめに

この授業どんなのり?

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

擬似乱数の正しい/間違ったプログラム

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

(18)

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

L01-Q1

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)

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

L01-Q2

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(2014) 19 / 20

(20)

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

L01-Q3

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

サンプルプログラムを参考に,引数 y として[0,1)一様乱数が与えられた とき,下の確率で値を返すint getrandom(double y)を書こう.

返り値 確率

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

予習復習問題L RaMMoodleに金18:00までに公開. 翌水11:05までに やってね. それまで何回でも「受験」できます. 最後の受験が点数になり ます.

http://hig3.net→左上の[統計データ収集]

参照

関連したドキュメント

J-STAGE は、日本の学協会が発行する論文集やジャー ナルなどの国内外への情報発信のサポートを目的とした 事業で、平成

The purpose of this course is for students to acquire basic knowledge required for AI Solution

区分 授業科目の名称 講義等の内容 備考.. 文 化

授業科目の名称 講義等の内容 備考

具体的な取組の 状況とその効果 に対する評価.

具体的な取組の 状況とその効果 に対する評価.

学年 海洋教育充当科目・配分時数 学習内容 一年 生活科 8 時間 海辺の季節変化 二年 生活科 35 時間 海の生き物の飼育.. 水族館をつくろう 三年