龍谷大学>理工学部>数理情報学科>樋口>担当科目>2011年>計算科学☆演習II>02回め 目次 前回 次回 略解
計算科学☆演習 II
樋口さぶろお*1 配布: 2011-04-22 Fri更新: Time-stamp: ”2011-04-22 Fri 09:27 JST hig”
1 略解 : ランダムウォークと乱数 1.1 略解 : 疑似乱数の使いかた
ソースコード1 正解だけど冗長 /*
各1 / 3の 確 率 で -1 ,0 ,+1 ,の 冗 長 な 正 解
*/
# 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
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
d o u b l e u n i f o r m ();
int m a i n (){
int s e e d ; d o u b l e y ; int t ;
int t m a x = 1 0 0 ; int s ;
s c a n f ("% d " ,& s e e d );
s r a n d ( s e e d );
for ( t =0; t < t m a x ; t + + ) { y = u n i f o r m ();
if ( y < 1 . 0 / 3 ) { s = -1;
}
if ( 1 . 0 / 3 < = y && y < 1 . 0 / 3 + 1 . 0 / 3 ) { s =0;
}
if ( 1 . 0 / 3 + 1 . 0 / 3 < = y ){
s = + 1 ; }
p r i n t f ("% d \ n " , s );
}
r e t u r n 0;
}
/** [0 ,1) 疑 似 乱 数 を 返 す */
d o u b l e u n i f o r m (){
r e t u r n r a n d ( ) / ( R A N D _ M A X + 1 . 0 ) ; }
ソースコード2 正解 1 /*
2 各1 / 3の 確 率 で -1 , 0 , +1 , の 正 解
3 */
4 # 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 5 # i n c l u d e < s t d i o . h >
6 # i n c l u d e < s t d l i b . h >
7
8 d o u b l e u n i f o r m ();
9
10 int m a i n (){
11 int s e e d ;
12 d o u b l e y ;
13 int t ;
14 int t m a x = 1 0 0 ;
15 int s ;
16
17 s c a n f ("% d " ,& s e e d );
18 s r a n d ( s e e d );
19 for ( t =0; t < t m a x ; t + + ) { 20 y = u n i f o r m ();
21 if ( y < 1 . 0 / 3 . 0 ){
22 s = -1;
23 } e l s e if ( y < 1 . 0 / 3 + 1 . 0 / 3 ) {
24 s =0;
25 } e l s e {
26 s = + 1 ;
27 }
28 p r i n t f ("% d \ n " , s );
29 }
30 r e t u r n 0;
31 } 32
33 /** [0 ,1) 疑 似 乱 数 を 返 す */
34 d o u b l e u n i f o r m (){
35 r e t u r n r a n d ( ) / ( R A N D _ M A X + 1 . 0 ) ; 36 }
*1 Copyright c⃝2011Saburo HIGUCHI. All rights reserved.
, http://hig3.net(講義のページもここからたどれます), へや:1 号館5階502.
ソースコード3 間違い /*
各1 / 3の 確 率 で -1 , 0 , +1 , の 誤 答
*/
# 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
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
d o u b l e u n i f o r m ();
int m a i n (){
int s e e d ; // d o u b l e y ; int t ;
int t m a x = 1 0 0 ; int s ;
s c a n f ("% d " ,& s e e d );
s r a n d ( s e e d );
for ( t =0; t < t m a x ; t + + ) { //
if ( u n i f o r m () < 1 . 0 / 3 . 0 ){
s = -1;
} e l s e if ( u n i f o r m ( ) < 1 . 0 / 3 + 1 . 0 / 3 ) { s =0;
} e l s e { s = + 1 ; }
p r i n t f ("% d \ n " , s );
}
r e t u r n 0;
}
/** [0 ,1) 疑 似 乱 数 を 返 す */
d o u b l e u n i f o r m (){
r e t u r n r a n d ( ) / ( R A N D _ M A X + 1 . 0 ) ; }
ソースコード4 間違い 1 /*
2 各1 / 3の 確 率 で -1 , 0 , +1 , の 誤 答
3 */
4 # 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 5 # i n c l u d e < s t d i o . h >
6 # i n c l u d e < s t d l i b . h >
7
8 d o u b l e u n i f o r m ();
9
10 int m a i n (){
11 int s e e d ;
12 d o u b l e y ;
13 int t ;
14 int t m a x = 1 0 0 ;
15 int s ;
16
17 s c a n f ("% d " ,& s e e d );
18 s r a n d ( s e e d );
19 y = u n i f o r m ();
20 for ( t =0; t < t m a x ; t + + ) { 21 if ( y < 1 . 0 / 3 . 0 ){
22 s = -1;
23 } e l s e if ( y < 1 . 0 / 3 . 0 + 1 . 0 / 3 . 0 ) {
24 s =0;
25 } e l s e {
26 s = + 1 ;
27 }
28 p r i n t f ("% d \ n " , s );
29 }
30 r e t u r n 0;
31 } 32
33 /** [0 ,1) 疑 似 乱 数 を 返 す */
34 d o u b l e u n i f o r m (){
35 r e t u r n r a n d ( ) / ( R A N D _ M A X + 1 . 0 ) ; 36 }
2 平均・分散・期待値
今日の目標
• (
離散的な)
確率変数が与えられたときC
言語でそれに従う疑似乱数を生成できる• (
離散的な)
確率変数が与えられたとき,
平均,
分散,
期待値が計算できる2.1 quiz: 平均 分散 標準偏差 期待値
確率変数
S
は値− 1
を確率1/10
で,
値0
を確率3/10
で,
値+1
を確率6/10
でとる. 1. S
の平均を求めよう.
2.
期待値E(S
2)
を求めよう. 3. S
の分散と標準偏差を求めよう. 4.
期待値E(2
S)
を求めよう.
2
お知らせと訂正
講義
/
演習2011-04-29
は授業実施日演習 きょうも個別座席指定まではしないけど
,
利用エリアを限定します.
左右の端と中央の 通路沿いのPC
は閉鎖します.
演習 すみません
.
先週のサンプルに#include "stdio.h"
となってるものが混入してま したが,
標準ライブラリは#include <stdio.h>
でinclude
します.
演習 すみません課題のネーミング変更しました
.
先週やったのは課題p101 → p011.
演習 すみませんプチテスト日程大変更
. 2011-05-06 → 2011-05-13, 2011-06-10 → 2011-06- 17, 2011-07-15 → 2011-07-15
または22.
目次 前回 次回 略解