VIDEO QUESTIONS · 10/10

プログラミング

Q321〜Q330。まず自分で答えを考え、必要なところだけ解説動画で確かめてください。

このページ
10問
分野全体
100問
キーワード一覧から選ぶ 23種類
QUESTION 321

以下のように定義された関数factorial(n)について、表示する(factorial(5))を実行した際の表示結果を答えよ。

(1)定義する factorial(n)
(2)| もし n == 0 ならば:
(3)| |  返す 1
(4)| そうでなければ:
(5)⎿ ⎿ 返す n * factorial(n - 1)
答えを見る

答え120

QUESTION 322

以下のように定義された関数fibo(n)について、表示する(fibo(5))を実行した際の表示結果を答えよ。

(1)定義する fibo(n)
(2)| もし n <= 2 ならば:
(3)| |  返す 1
(4)| そうでなければ:
(5)⎿ ⎿ 返す fibo(n - 1) + fibo(n - 2)
答えを見る

答え5

QUESTION 323

このプログラムは以下の条件で積立式の少額投資を30年間行った場合の資産総額をシミュレートするものである。
・毎年、年初に100万円ずつ追加で投資する。
・運用利回り(1年間で増える割合)は年ごとに1%~6%でランダムに変動する。
乱数()は0以上1未満の実数をランダムに返す関数である。
空欄に入る最も適切なものを選べ。

(1)tumitate = 1000000 #毎年の追加投資額
(2)kikan = 30 #投資期間(年)
(3)sougaku = 0 #資産総額
(4)i を 1 から kikan まで 1 ずつ増やしながら繰り返す:
(5)| sougaku = sougaku + tumitate
(6)| rimawari = ( ア )
(7)⎿ sougaku = ( イ )
(8)表示する("30年後の資産総額は", sougaku, "円")

( ア ):1以上6未満の実数
1.乱数() * 5
2.乱数() * 6
3.1 + 乱数() * 5
4.1 + 乱数() * 6
( イ )
1.sougaku * rimawari
2.sougaku * rimawari / 100
3.sougaku + sougaku * rimawari
4.sougaku + sougaku * rimawari / 100
答えを見る

答えア 3.1 + 乱数() * 5 イ 4.sougaku + sougaku * rimawari / 100

QUESTION 324

このプログラムはコインを20回投げるという試行を100セット行い、各セットで表が出た回数を度数分布表にまとめるものである。
乱数()は0以上1未満の実数をランダムに返す関数であり、配列の添字は0から始まるものとする。
空欄に入る最も適切なものを選べ。

(1)dosu = [0, ... ,0] #すべての要素が0,十分な要素数
(2)toss = 20, set = 100
(3)i を 1 から set まで 1 ずつ増やしながら繰り返す:
(4)| count = 0
(5)| j を 1 から toss まで 1 ずつ増やしながら繰り返す:
(6)| | もし 乱数() < 0.5 ならば:
(7)| ⎿ ⎿ count = count + 1
(8)⎿ ( ア )
(9)表示する("結果:", dosu)

1.dosu[j] = count
2.dosu[i] = count
3.dosu[count] = count
4.dosu[count] = dosu[count] + 1
答えを見る

答え4.dosu[count] = dosu[count] + 1

QUESTION 325

ランダムに誕生日を生成していき、初めて同じ誕生日が現れるまでの回数をカウントするプログラムとなるように、空欄に入る最も適切なものを選べ。
ランダム日付()は1月1日から12月31日までの日付のうち一つをランダムに返す関数であり、要素追加(配列, 値)は配列の末尾に新しい要素を追加する関数である。
また、「配列 に 値 が含まれている」は配列に値が含まれているときに真となり、そうでなければ偽となるとする。

(01)Birthdays = [] #空の配列
(02)found = 0 , count = 0
(03)( ア ) の間繰り返す:
(04)| day = ランダム日付()
(05)| count = count + 1
(06)| もし Birthdays に day が含まれている ならば:
(07)| | ( イ )
(08)| そうでなければ:
(09)⎿ ⎿ 要素追加(Birthdays, day)
(10)表示する("同じ誕生日が見つかるまでの回数:", count)

( ア )( イ )
1.found = 0
2.found = 1
3.found == 0
4.found == 1
答えを見る

答えア 3.found == 0 イ 2.found = 1

QUESTION 326

ある感染症に人口の3%が罹患しているという。
現在使われている検査薬は、罹患している人に使用すると99%の割合で正しく陽性と判定し、罹患していない人に使用すると98%の割合で正しく陰性と判定する。
このプログラムは、この検査薬を1万人に使って陽性と判定された人のうち実際に罹患している人の割合を算出するものである。
乱数()は0以上1未満の実数をランダムに返す関数である。
空欄に入る最も適切なものを選べ。

(01)ninzu = 10000
(02)count1 = 0, count2 = 0
(03)i を 1 から ninzu まで 1 ずつ増やしながら繰り返す:
(04)| もし 乱数() < 0.03 ならば:
(05)| | もし 乱数() < 0.99 ならば:
(06)| | ⎿ ( ア )
(07)| そうでなければ:
(08)| | もし 乱数() < 0.02 ならば:
(09)⎿ ⎿ ⎿ ( イ )
(10)もし count1 > 0 ならば:
(11)| 表示する("検査で陽性のうち実際に罹患している割合は", 100 * count2 / count1, "%")
(12)そうでなければ:
(13)⎿ 表示する("陽性者はいませんでした。")

( ア )( イ )
1.count1 = count1 + 1
2.count2 = count2 + 1
3.count1 = count1 + 1, count2 = count2 + 1
4.count1 = count1 + i, count2 = count2 + i
答えを見る

答えア 3.count1 =count1 + 1, count2 = count2 + 1 イ 1.count1 =count1 + 1

QUESTION 327

このプログラムはモンテカルロ法を用いて円周率の推定値を求めるものである。
乱数()は0以上1未満の実数をランダムに返す関数である。
空欄に入る最も適切なものを選べ。

(1)kaisu = 1000
(2)kosu = 0
(3)i を 1 から kaisu まで 1 ずつ増やしながら繰り返す:
(4)| x = 乱数()
(5)| y = 乱数()
(6)| もし x ** 2 + y ** 2 <= 1 ならば:
(7)⎿ ⎿ kosu = kosu + 1
(8)表示する("円周率の推定値は", ( ア ))

1.kosu / kaisu
2.2 * kosu / kaisu
3.4 * kosu / kaisu
4.kosu / kaisu / 4
答えを見る

答え3.4 * kosu / kaisu

QUESTION 328

このプログラムはxy平面上を動く点をプロットするものである。
動く点は、各繰り返しごとにx軸方向に0.1、y軸方向に+1または-1だけ動く。
y軸方向に+1動くか-1動くかはランダムである。
乱数()は0以上1未満の実数をランダムに返す関数であり、要素追加(配列, 値)は配列の末尾に新しい要素を追加する関数である。
また、プロットする(配列X, 配列Y)は2つの配列の同じ添字の要素を組みとして、xy平面に座標をプロットして表示する関数である。
配列の添字は0から始まるものとする。
空欄に入る最も適切なものを選べ。

(01)kaisu = 1000
(02)X_zahyo = [0], Y_zahyo = [0]
(03)i を 0 から kaisu - 1 まで 1 ずつ増やしながら繰り返す:
(04)| もし 乱数() < 0.5 ならば:
(05)| | y_henka = 1
(06)| そうでなければ:
(07)| ⎿ y_henka = -1
(08)| 要素追加(X_zahyo,( ア ))
(09)⎿ 要素追加(Y_zahyo,( イ ))
(10)プロットする(X_zahyo, Y_zahyo)

( ア )
1.0.1
2.X_zahyo[i - 1] + 0.1
3.X_zahyo[i] + 0.1
4.X_zahyo[i + 1] + 0.1

( イ )
1.y_henka
2.Y_zahyo[i - 1] + y_henka
3.Y_zahyo[i] + y_henka
4.Y_zahyo[i + 1] + y_henka
答えを見る

答えア 3.X_zahyo[i] + 0.1 イ 3.Y_zahyo[i] + y_henka

QUESTION 329

1日で15個から25個売れる商品がある。
毎日20個ずつ仕入れた場合の7日目終了時点での在庫数をシミュレートする。
また、7日間で品切れを起こした(買おうとしたが買えなかった人がいた)日数も数える。
ランダム整数(n, m)はnからmの整数をランダムに返す関数である。
空欄に入る最も適切なものを選べ。

(01)siire = 20, kikan = 7
(02)zaiko = 0, sinagire = 0
(03)i を 1 から kikan まで 1 ずつ増やしながら繰り返す:
(04)| zaiko = zaiko + siire
(05)| hanbai = ランダム整数(15, 25)
(06)| もし zaiko >= hanbai ならば:
(07)| | ( ア )
(08)| そうでなければ:
(09)| | ( イ )
(10)⎿ ⎿ sinagire = sinagire + 1
(11)表示する("7日目終了時点の在庫数:", zaiko)
(12)表示する("品切れを起こした日数:", sinagire)

( ア )( イ )
1.zaiko = zaiko + hanbai
2.zaiko = zaiko - hanbai
3.zaiko = hanbai
4.zaiko = 0
答えを見る

答えア 2.zaiko = zaiko - hanbai イ 4.zaiko = 0

QUESTION 330

次のプログラムはあるコンビニに設置された1台のATMの平均待ち時間についてのシミュレーションである。
・このATMの作動時間は1日900分である。
・顧客は毎分0.1の確率で訪れる。
・顧客一人あたりのATM利用時間は2分から6分のランダムな時間である。
乱数()は0以上1未満の実数を返す関数であり、ランダム整数(n, m)はnからmの整数をランダムに返す関数である。
空欄に入る最も適切なものを選べ。
※ 読みやすくするため、変数名も日本語にしている。

(01)営業終了時刻 = 900
(02)現在時刻 = 0
(03)利用時間 = 0 #利用時間が0ならば利用可能状態
(04)待ち客数 = 0 #現在の待っている人数
(05)総待ち時間 = 0 #複数人いる場合重複して数える
(06)顧客数 = 0 #来客者数全体
(07)現在時刻 < 営業終了時刻 の間繰り返す:
(08)| もし 乱数() < 0.1 ならば:
(09)| | 待ち客数 = 待ち客数 + 1
(10)| ⎿ 顧客数 = 顧客数 + 1
(11)| もし 利用時間 > 0 なばら:
(12)| ⎿ 利用時間 = 利用時間 - 1
(13)| もし ( ア ) ならば:
(14)| | 利用時間 = ランダム(2, 6)
(15)| ⎿ 待ち客数 = 待ち客数 - 1
(16)| もし 待ち客数 > 0 ならば:
(17)| ⎿ 総待ち時間 = 総待ち時間 + 待ち客数
(18)⎿ 現在時刻 = 現在時刻 + 1
(19)表示する("本日の来客者数:", 顧客数)
(20)表示する("平均待ち時間", 総待ち時間 / 顧客数)

( ア )
1.待ち客数 > 0
2.利用時間 == 0
3.待ち客数 > 0 and 利用時間 == 0
4.待ち客数 > 0 or 利用時間 == 0
答えを見る

答え3.待ち客数 > 0 and 利用時間 == 0