161 Views
December 17, 21
スライド概要
コンピューターサイエンス
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
cs-7. 乱数,シミュレーション (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 1
アウトライン • 乱数 • Excel での乱数 • 乱数を用いたシミュレーションで円周率を求める • ランダムな到着 • 分布 2
7-1 乱数 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 3
乱数 • 乱数は、ランダムな数値のこと. • 乱数はシミュレーションに欠かせない. ※ コンピュータゲームで,敵キャラがランダムに 登場する = 乱数を使って「現実感」を出す例 ※ シミュレーションで,現実世界の再現のために 乱数を使うことも 4
Paiza.IO さまざまなプログラミング言語の体験, 演習ができるオンラインサービス ① ウェブブラウザで次の URL を開く https://paiza.io/ja ② 「コード作成を試してみる」をク リック ③ 言語を選ぶ.この授業では Python 3 5
乱数を発生させる Python プログラム import random print( random.random() ) 0 から 1 までの数を発生 • 「import」は拡張機能のイン ポート. • 拡張機能についての情報は, https://docs.python.org/ja/3 https://pypi.org/ などで確認できる 6
乱数を発生させる Python プログラム import random print( random.random() ) import random print( random.random() ) import random print( random.random() ) 乱数は,毎回,値が変わる 7
乱数を発生させる Python プログラム import random a = random.random() if a < 0.2: print("Atari"); else: print("hazure"); 20 % の確率で「Arati」を表示. 80 % の確率で「hazure」を表示. 8
まとめ コンピュータには,ランダムな数(乱数)を発生す る機能がある 9
7-2 Excel での乱数 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 10
Office 365 の種類 • Office 365 のオンライン版 WEBブラウザで使う. https://portal.office.com 各自の ID とパスワードでサインインが必要. • Office 365 のアプリ版 前もってインストールが必要. インストールでは,大量の通信が行われる. (時間がかかる.通信費用にも注意) 2種類ある.この授業では,どちらを使用しても問題 ない 11
Office 365 オンライン版で Excel を起動 【要点】 Web ブラウザで,次のページを開き,各自の ID とパスワードでサインイン https://portal.office.com 12
Office 365 オンライン版で Excel を起動 ① Web ブラウザで,次のページを開く https://portal.office.com ② 電子メールアドレスを入れる.「次へ」をクリック. (例)[email protected] 13
Office 365 オンライン版で Excel を起動 ③ パスワードを入れ,「サインイン」をクリック パスワードは,各自が設定したもの ④ Excel を使いたいときは,メニューで Excel を選ぶ さまざまなメニュー 14
Office 365 オンライン版で Excel を起動 ⑤ Excel のブックの種類を選ぶ この授業では「新しい空白のブック」を使う ⑥ Excel の画面が開く 15
Excel で乱数 =RAND() 0 以上 1 未満の乱数 Excel で、式「=RAND()」を コピー&貼り付け 16
乱数の範囲の調整 2 1 0 1 0 -1 元の乱数は 0 か ら 1 の範囲とす る 2倍すると,範 囲は 0 から 2 2倍して,1引く と,範囲は -1 から 1 17
① Excel を起動する.起動したら「空白の ブック」を選ぶ オンライン版の場合 アプリ版の場合 18
② -1 以上 1 未満の乱数の式 「=RAND() * 2 - 1」をセル A1 に書く 19
③ セル A1 の式を, A2 から A100 に「コピー&貼り付け」する. 右クリックメニューが便利 実行のたびに、違う値になる (乱数なので、ランダムな値) ・表示が「###」のようになっている のが気になる場合には,列の幅を広げる ・あとで使うので,Excel は 終了しないで,そのままにしておく 20
7-3 乱数を用いた シミュレーションで円周率を求める (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 21
いままでのまとめ セル A1 から A100 -1 以上 1 未満の乱数の式 =RAND() * 2 - 1 22
① セル A1 の式を, B1 から B100 にも「コピー&貼り付け」する. 右クリックメニューが便利 実行のたびに、違う値になる (乱数なので、ランダムな値) 23
Excel での散布図の作成手順 元データ ① グラフ化したい部分を範囲選択 アプリ版の Excel オンライン版の Excel ② リボンで「挿入」→散布図 散布図が得られる 24
Excel での散布図の種類の選択 挿入 散布図を展開 オンライン版の Excel 一番左の散布図を クリック 挿入 散布図を展開 アプリ版の Excel 一番左上の散布図 をクリック 25
② セル A1 から B100 までのエリア を,マウスでド ラッグして(範囲選択),散布図を作成 マウスでドラッグ(範囲選択) 乱数の散布図が 得られる 26
縦の長さ2,横の長さ2の正方形の中に, 青い点は100個 27
③ 中心 (0, 0) で半径1の円の式 「=(A1 * A1 + B1 * B1 ) < 1」をセル C1 に 点が「半径1の円の中にあるか」を調べている 100個の点全てを調べ, 円の中の点の数が 60 なら,円の面積は 60 * 4 / 100 縦の長さ2,横の長さ2の正方形 28
④ セル C1 の式を, C2 から C100 に「コピー&貼り付け」 右クリックメニューが便利 青い点が,円の内側にあれば TRUE 29
Excel で条件に合致するセルを数える =COUNTIF(C1:C100, TRUE) セルの範囲 C1:C100 の中で, 値が TRUE になっているものを数える 30
⑤ セル C101 に 「=COUNTIF(C1:C100, TRUE)」を書いて, TRUE の数を数える 31
⑥ セル C102 「=C101 * 4 / 100」をセル C102 に書いて, 結果を確認する → 円周率に近い近い値が求まる ※ 円の面積 = 円周率 × (半径)2 32
7-4 ランダムな到着 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 33
• シミュレーションは,仮説の検証に役立つ 例えば, スーパーのレジなどの待ち行列. 意外と,私の寸前に,別の人が並ぶことがある. 私の運が悪いのか? → No このことをシミュレーションで確認 34
ランダムな客の到着 ◆ 客が1時間(60分)の間に、12人来そう! というとき 5分 5分 5分 上の図のように、5分ごとに1人ずつ来ることは、 まずあり得ません 35
ランダムな客の到着 ◆ 客が1時間(60分)の間に、12人来そう! というとき 客は60分の間に、ランダムにやってきます 36
① 新しく Excel の空白のブックを作る ② 0 以上 60 未満の乱数の式 「=TRUNC( RAND() * 60 )」をセル A1 に書く 37
③ 客が12人来るという状況をシミュレーションしたい A1 の式を A2 から A12 に「コピー&貼り付け」 右クリックメニューが便利 実行のたびに違う値になる (乱数なので、ランダムな値) 38
④A列にあるもの(式)について, 式の結果の「値」だけを.B列に「コピー&貼り付け」 ②右クリック メニューで 「コピー」 ③値だけを張り付け セルB1を 右クリックして,「貼り付け のオプション」の「値」 ①まず,A1からA12を ドラッグして,範囲選択 Excel のバージョンによっ ては,違う場合がある 39
⑤ B列の値を並べ替えたい 続く ①まず,B1からB12を 範囲選択 40
オンライン版 Excel での並べ替え ② リボンで「データ」→ 「昇順で並べ替え」 ①まず,B1からB12を 範囲選択 「並べ替えのみ」を選ぶ 41
アプリ版での並べ替え ② リボンで「データ」→「並べ替え」 ①まず,B1からB12を 範囲選択 もし,警告表示が出たら 「並べ替え」をクリック 「最優先されるキー」を 「列B」に設定して「OK」 42
⑥ B列が,左のようになることを確認 ⑦ 次に,セル C2 に次の式を入れる =B2-B1 これは,到着間隔を求める式 ⑧ C2の式を, C3 から C12 に 「コピー&貼り付け」 右クリックメニューが便利 43
⑨ C列を確認 60分の間に 12人 平均で5分間隔 間隔はばらばら 0,1,2分のような小さな値も, けっこう多い 44
7-5 分布 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 45
• コイン投げを50回繰り返すと,表が何回で,裏が何回か のシミュレーション だいたい 25 シミュレーションの繰り返しで確認 46
Excel の乱数 • =RAND() 0 以上 1 未満の乱数 • =IF(RAND() < 0.5, 1, 0) 乱数が 0.5 より小さければ 1, さもなければ 0 47
コイン投げのシミュレーション • コインを 50 枚投げる • 表が出る確率 0.5, 裏が出る確率 0.5 • それを繰り返す 48
① 新しく Excel の空白のブックを作る ② セル A1 に「0.5」 ③ セル A2 に次の式 =IF(RAND() < $A$1, 1, 0) 49
④ セル A2 の式を,A3 から A51 に「コピー&貼り 付け」する 右クリックメニューが便利 ⑤ セル A52 に次の式 =SUM(A2:A51) 50 枚のうち, 表になるのは何枚になりそうか ※ 乱数なので,実行のたびに違った値になる 50
⑥ A2 から A52 を範囲選択して,右クリックメニュー で「コピー」 ⑦ それを,B2から E52に張り付け 51
⑧ 52 行目を確認 50 枚のうち, 表になるのは何枚になりそうか 52
⑨ 100 列に増やしてみる A2 から A52 を範囲選択して,右クリックメニューで「コ ピー」 それを F2から CV52に貼り付け 53
⑩ A52 から CV52 を範囲選択して、挿入を選び、 ヒストグラムを選ぶ ヒストグラムは:頻度分布 アプリ版の Excel オンライン版の Excel 54
ヒストグラム 頻度分布(何が多くて、何が少ないか)を示したグ ラフ 50 枚コインを投げる.表が出る確率は 0.5 表が出る枚数のヒストグラムは 頻度大 頻度小 55
⑪ 表が出た枚数の,平均を求めてみる セル A53 に次の式 =AVERAGE(A52:CV52) 56
50 枚コインを投げる.表が出る確率は 0.5 表が出る枚数の平均は ■ Excel (シミュレーション)では =AVERAGE(A52:CV52) データによる算出 ■ 数式では 平均 25 数式による算出 = 50 × 0.5 57