---
title: cs-7. 乱数，シミュレーション
tags:  #コンピューターサイエンス #乱数 #シミュレーション #excel #円周率 #ランダムな到着 #分布  
author: [kunihikokaneko](https://convert.docswell.com/user/6674398749)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4VJPD31LJ8.jpg?width=480
description: コンピューターサイエンス URL: https://www.kkaneko.jp/cc/cs/index.html
published: December 17, 21
canonical: https://convert.docswell.com/s/6674398749/57E98K-2021-12-17-134017
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4VJPD31LJ8.jpg)

cs-7. 乱数，シミュレーション
（コンピューターサイエンス）
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L2EV14Y6JQ.jpg)

アウトライン
• 乱数
• Excel での乱数
• 乱数を用いたシミュレーションで円周率を求める
• ランダムな到着
• 分布
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/Z57G21927L.jpg)

7-1 乱数
（コンピューターサイエンス）
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V4EQPDW9JP.jpg)

乱数
• 乱数は、ランダムな数値のこと．
• 乱数はシミュレーションに欠かせない．
※ コンピュータゲームで，敵キャラがランダムに
登場する
＝ 乱数を使って「現実感」を出す例
※ シミュレーションで，現実世界の再現のために
乱数を使うことも
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/DKJ4YZ1RE1.jpg)

Paiza.IO
さまざまなプログラミング言語の体験，
演習ができるオンラインサービス
① ウェブブラウザで次の URL を開く
https://paiza.io/ja
② 「コード作成を試してみる」をク
リック
③ 言語を選ぶ．この授業では Python 3
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PLE16RGVJG.jpg)

乱数を発生させる Python プログラム
import random
print( random.random() )
0 から 1 までの数を発生
• 「import」は拡張機能のイン
ポート．
• 拡張機能についての情報は，
https://docs.python.org/ja/3
https://pypi.org/
などで確認できる
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/8GEWW1K3E2.jpg)

乱数を発生させる Python プログラム
import random
print( random.random() )
import random
print( random.random() )
import random
print( random.random() )
乱数は，毎回，値が変わる
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/W47Z5PZGE3.jpg)

乱数を発生させる Python プログラム
import random
a = random.random()
if a &lt; 0.2:
print(&quot;Atari&quot;);
else:
print(&quot;hazure&quot;);
20 % の確率で「Arati」を表示．
80 % の確率で「hazure」を表示．
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/KYJ69MZQJV.jpg)

まとめ
コンピュータには，ランダムな数（乱数）を発生す
る機能がある
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/5GJ5NZW2E4.jpg)

7-2 Excel での乱数
（コンピューターサイエンス）
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/V9E25RQ1ER.jpg)

Office 365 の種類
• Office 365 のオンライン版
WEBブラウザで使う．
https://portal.office.com
各自の ID とパスワードでサインインが必要．
• Office 365 のアプリ版
前もってインストールが必要．
インストールでは，大量の通信が行われる．
（時間がかかる．通信費用にも注意）
２種類ある．この授業では，どちらを使用しても問題
ない
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/5D7YKDW4JM.jpg)

Office 365 オンライン版で Excel を起動
【要点】 Web ブラウザで，次のページを開き，各自の ID
とパスワードでサインイン
https://portal.office.com
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/2VENR69678.jpg)

Office 365 オンライン版で Excel を起動
① Web ブラウザで，次のページを開く
https://portal.office.com
② 電子メールアドレスを入れる．「次へ」をクリック．
（例）p1234567@fukuyama-u.ac.jp
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GY79ML2RE3.jpg)

Office 365 オンライン版で Excel を起動
③ パスワードを入れ，「サインイン」をクリック
パスワードは，各自が設定したもの
④ Excel を使いたいときは，メニューで Excel を選ぶ
さまざまなメニュー
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/5G78LX5GED.jpg)

Office 365 オンライン版で Excel を起動
⑤ Excel のブックの種類を選ぶ
この授業では「新しい空白のブック」を使う
⑥ Excel の画面が開く
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/ML7LL8YX7R.jpg)

Excel で乱数
=RAND()
0 以上 1 未満の乱数
Excel で、式「=RAND()」を
コピー＆貼り付け
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/54EMM6N3EW.jpg)

乱数の範囲の調整
2
1
0
1
0
-1
元の乱数は 0 か
ら 1 の範囲とす
る
2倍すると，範
囲は 0 から 2
2倍して，1引く
と，範囲は -1
から 1
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/ZPERVPDR79.jpg)

① Excel を起動する．起動したら「空白の
ブック」を選ぶ
オンライン版の場合
アプリ版の場合
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/NP7XZ31YEX.jpg)

② -1 以上 1 未満の乱数の式
「=RAND() * 2 - 1」をセル A1 に書く
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/637K8Y24ED.jpg)

③ セル A1 の式を，
A2 から A100 に「コピー＆貼り付け」する．
右クリックメニューが便利
実行のたびに、違う値になる
（乱数なので、ランダムな値）
・表示が「###」のようになっている
のが気になる場合には，列の幅を広げる
・あとで使うので，Excel は
終了しないで，そのままにしておく
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4LJ3294D75.jpg)

7-3 乱数を用いた
シミュレーションで円周率を求める
（コンピューターサイエンス）
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/V8JDZGQ2EG.jpg)

いままでのまとめ
セル A1 から A100
-1 以上 1 未満の乱数の式
=RAND() * 2 - 1
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/4VEPD3LLE8.jpg)

① セル A1 の式を，
B1 から B100 にも「コピー＆貼り付け」する．
右クリックメニューが便利
実行のたびに、違う値になる
（乱数なので、ランダムな値）
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/L27V14Q6EQ.jpg)

Excel での散布図の作成手順
元データ
① グラフ化したい部分を範囲選択
アプリ版の Excel
オンライン版の Excel
② リボンで「挿入」→散布図
散布図が得られる
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/Z5JG21W2JL.jpg)

Excel での散布図の種類の選択
挿入
散布図を展開
オンライン版の Excel
一番左の散布図を
クリック
挿入
散布図を展開
アプリ版の Excel
一番左上の散布図
をクリック
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/V47QPD39EP.jpg)

② セル A1 から B100 までのエリア を，マウスでド
ラッグして（範囲選択），散布図を作成
マウスでドラッグ（範囲選択）
乱数の散布図が
得られる
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/DKE4YZNR71.jpg)

縦の長さ２，横の長さ２の正方形の中に，
青い点は１００個
27


# Page. 28

![Page Image](https://bcdn.docswell.com/page/PL716R5VEG.jpg)

③ 中心 (0, 0) で半径１の円の式
「=(A1 * A1 + B1 * B1 ) &lt; 1」をセル C1 に
点が「半径1の円の中にあるか」を調べている
１００個の点全てを調べ，
円の中の点の数が 60 なら，円の面積は 60 * 4 / 100
縦の長さ２，横の長さ２の正方形
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/8G7WW15372.jpg)

④ セル C1 の式を，
C2 から C100 に「コピー＆貼り付け」
右クリックメニューが便利
青い点が，円の内側にあれば
TRUE
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/W4JZ5PNG73.jpg)

Excel で条件に合致するセルを数える
=COUNTIF(C1:C100, TRUE)
セルの範囲 C1:C100 の中で，
値が TRUE になっているものを数える
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/KYE69M8QEV.jpg)

⑤ セル C101 に
「=COUNTIF(C1:C100, TRUE)」を書いて，
TRUE の数を数える
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/5GE5NZ9274.jpg)

⑥ セル C102
「=C101 * 4 / 100」をセル C102 に書いて，
結果を確認する
→
円周率に近い近い値が求まる
※
円の面積
＝ 円周率
×
（半径）２
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/V9725R217R.jpg)

7-4 ランダムな到着
（コンピューターサイエンス）
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦
33


# Page. 34

![Page Image](https://bcdn.docswell.com/page/5DJYKDY4EM.jpg)

• シミュレーションは，仮説の検証に役立つ
例えば，
スーパーのレジなどの待ち行列．
意外と，私の寸前に，別の人が並ぶことがある．
私の運が悪いのか？
→ No
このことをシミュレーションで確認
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/2V7NR6P6J8.jpg)

ランダムな客の到着
◆ 客が１時間（６０分）の間に、１２人来そう！
というとき
５分
５分
５分
上の図のように、５分ごとに１人ずつ来ることは、
まずあり得ません
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/GYJ9ML3R73.jpg)

ランダムな客の到着
◆ 客が１時間（６０分）の間に、１２人来そう！
というとき
客は６０分の間に、ランダムにやってきます
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/5GJ8LXMG7D.jpg)

① 新しく Excel の空白のブックを作る
② 0 以上 60 未満の乱数の式
「=TRUNC( RAND() * 60 )」をセル A1 に書く
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/MLJLL83XJR.jpg)

③ 客が１２人来るという状況をシミュレーションしたい
A1 の式を A2 から A12 に「コピー＆貼り付け」
右クリックメニューが便利
実行のたびに違う値になる
（乱数なので、ランダムな値）
38


# Page. 39

![Page Image](https://bcdn.docswell.com/page/547MM6D37W.jpg)

④A列にあるもの（式）について，
式の結果の「値」だけを．B列に「コピー＆貼り付け」
②右クリック
メニューで
「コピー」
③値だけを張り付け
セルB1を
右クリックして，「貼り付け
のオプション」の「値」
①まず，A1からA12を
ドラッグして，範囲選択
Excel のバージョンによっ
ては，違う場合がある
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/ZP7RVP4RJ9.jpg)

⑤ B列の値を並べ替えたい
続く
①まず，B1からB12を
範囲選択
40


# Page. 41

![Page Image](https://bcdn.docswell.com/page/NPJXZ32Y7X.jpg)

オンライン版 Excel での並べ替え
②
リボンで「データ」→
「昇順で並べ替え」
①まず，B1からB12を
範囲選択
「並べ替えのみ」を選ぶ
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/63JK8YM47D.jpg)

アプリ版での並べ替え
② リボンで「データ」→「並べ替え」
①まず，B1からB12を
範囲選択
もし，警告表示が出たら
「並べ替え」をクリック
「最優先されるキー」を
「列B」に設定して「OK」
42


# Page. 43

![Page Image](https://bcdn.docswell.com/page/4LE329YDJ5.jpg)

⑥ B列が，左のようになることを確認
⑦ 次に，セル C2 に次の式を入れる
=B2-B1
これは，到着間隔を求める式
⑧ C2の式を， C3 から C12 に
「コピー＆貼り付け」
右クリックメニューが便利
43


# Page. 44

![Page Image](https://bcdn.docswell.com/page/V8EDZG527G.jpg)

⑨ C列を確認
６０分の間に １２人
平均で５分間隔
間隔はばらばら
０，１，２分のような小さな値も，
けっこう多い
44


# Page. 45

![Page Image](https://bcdn.docswell.com/page/4V7PD3GL78.jpg)

7-5 分布
（コンピューターサイエンス）
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦
45


# Page. 46

![Page Image](https://bcdn.docswell.com/page/L2JV14667Q.jpg)

• コイン投げを５０回繰り返すと，表が何回で，裏が何回か
のシミュレーション
だいたい ２５
シミュレーションの繰り返しで確認
46


# Page. 47

![Page Image](https://bcdn.docswell.com/page/Z5EG21N2EL.jpg)

Excel の乱数
• =RAND()
0 以上 1 未満の乱数
• =IF(RAND() &lt; 0.5, 1, 0)
乱数が 0.5 より小さければ 1,
さもなければ 0
47


# Page. 48

![Page Image](https://bcdn.docswell.com/page/V4JQPDQ97P.jpg)

コイン投げのシミュレーション
• コインを 50 枚投げる
• 表が出る確率 0.5, 裏が出る確率 0.5
• それを繰り返す
48


# Page. 49

![Page Image](https://bcdn.docswell.com/page/DK74YZYRJ1.jpg)

① 新しく Excel の空白のブックを作る
② セル A1 に「0.5」
③ セル A2 に次の式
=IF(RAND() &lt; $A$1, 1, 0)
49


# Page. 50

![Page Image](https://bcdn.docswell.com/page/PLJ16R6V7G.jpg)

④ セル A2 の式を，A3 から A51 に「コピー＆貼り
付け」する
右クリックメニューが便利
⑤ セル A52 に次の式
=SUM(A2:A51)
50 枚のうち，
表になるのは何枚になりそうか
※ 乱数なので，実行のたびに違った値になる
50


# Page. 51

![Page Image](https://bcdn.docswell.com/page/8GJWW1W3J2.jpg)

⑥ A2 から A52 を範囲選択して，右クリックメニュー
で「コピー」
⑦ それを，B2から E52に張り付け
51


# Page. 52

![Page Image](https://bcdn.docswell.com/page/W4EZ5P5GJ3.jpg)

⑧ 52 行目を確認
50 枚のうち，
表になるのは何枚になりそうか
52


# Page. 53

![Page Image](https://bcdn.docswell.com/page/KY769M9Q7V.jpg)

⑨ 100 列に増やしてみる
A2 から A52 を範囲選択して，右クリックメニューで「コ
ピー」
それを F2から CV52に貼り付け
53


# Page. 54

![Page Image](https://bcdn.docswell.com/page/5G75NZN2J4.jpg)

⑩ A52 から CV52 を範囲選択して、挿入を選び、
ヒストグラムを選ぶ
ヒストグラムは：頻度分布
アプリ版の Excel
オンライン版の Excel
54


# Page. 55

![Page Image](https://bcdn.docswell.com/page/V9J25R51JR.jpg)

ヒストグラム
頻度分布（何が多くて、何が少ないか）を示したグ
ラフ
50 枚コインを投げる．表が出る確率は 0.5
表が出る枚数のヒストグラムは
頻度大
頻度小
55


# Page. 56

![Page Image](https://bcdn.docswell.com/page/5DEYKDK47M.jpg)

⑪ 表が出た枚数の，平均を求めてみる
セル A53 に次の式
=AVERAGE(A52:CV52)
56


# Page. 57

![Page Image](https://bcdn.docswell.com/page/2VJNR6R6E8.jpg)

50 枚コインを投げる．表が出る確率は 0.5
表が出る枚数の平均は
■ Excel （シミュレーション）では
=AVERAGE(A52:CV52)
データによる算出
■ 数式では
平均
25
数式による算出
= 50 × 0.5
57


