■場合の数
場合の数とは、ある事象について、起こりうるすべてのパターン数を表す。
例えば、サイコロの出る目について、すべてのパターンは、以下の6通りである。
「1」、「2」、「3」、「4」、「5」、「6」
▼和の法則
同時に起こらない「X」、「Y」という2つの事象について、
「X」の起こりうる場合の数を「x」、
「Y」の起こりうる場合の数を「y」とし、
「X」または「Y」が起こりうる場合の数は「x + y」通りとなる。
■例題
2つのサイコロ「A」、「B」を振った時、サイコロ「A」、「B」の目の和が4の倍数となる場合は、何通りあるか、Pythonで実装する。
▼机上計算
2つのサイコロ「A」、「B」が出る目の和を以下の表に示す。
なお、4の倍数である値については、「赤字」とする。
サイコロA→ サイコロB↓ | 1 | 2 | 3 | 4 | 5 | 6 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
上表より、4の倍数の値は「4」、「8」、「12」であり、それぞれの場合の数は以下の通り。
「4」:3通り
「8」:5通り
「12」:1通り
すなわち、2つのサイコロ「A」、「B」を振った時、サイコロ「A」、「B」の目の和が4の倍数となる場合は、9通りである。(= 3 + 5 + 1)
■Pythonによる実装
▼フローチャート
▼プログラム仕様
入力 | 処理内容 | 出力 |
---|---|---|
– | 定数として、2つのサイコロA、Bを定義する。 サイコロA:1、2、3、4、5、6 サイコロB:1、2、3、4、5、6 | |
– | 合計値の初期値「0」をセットする。 | |
– | 処理結果格納用の配列をセットする。 | |
– | ■ループ処理:サイコロAの目の数だけ繰り返し |■ループ処理:サイコロBの目の数だけ繰り返し ||サイコロA、Bの和を算出 ||▼条件分岐:サイコロの目の和 |||【4の倍数の場合】 |||サイコロA、Bの値を出力する。 |||2つのサイコロの和を出力する。 |||配列にサイコロA、Bの和を格納する。 ||▲ |■ ■ | 【コンソール】 サイコロABの値 サイコロABの和 |
– | 合計で何通りあるか出力する。 | 【コンソール】 N通り ※Nは任意の数 |
▼サンプルコード
# サイコロA、Bの和を求め、
# 和が4の倍数である場合が何通りか算出する処理
def sum_number_of_caces():
# 定数:2つのサイコロA、Bを定義
DICE_A = [1, 2, 3, 4, 5, 6]
DICE_B = [1, 2, 3, 4, 5, 6]
# 合計値の初期値をセット
sum = 0
# 処理結果格納用の配列をセット
result_data = []
# サイコロAの目の数だけ繰り返し
for i in DICE_A:
# サイコロBの目の数だけ繰り返し
for j in DICE_B:
# サイコロA、Bの和を算出
sum = i + j
# サイコロの目の和が4の倍数の場合
if sum % 4 == 0:
# サイコロA、Bの値を出力
print('サイコロA:', i, 'サイコロB:', j)
# 2つのサイコロの和を出力
print('サイコロA、Bの和:', sum)
# 出力結果の区切りとして「*」を出力
print('**********')
# 配列にサイコロA、Bの和を格納
result_data.append(sum)
# 合計で何通りあるか出力
print('答え:', len(result_data), '通り')
# メイン処理
if __name__ == '__main__':
sum_number_of_caces()
▼実行結果
サイコロA: 1 サイコロB: 3
サイコロA、Bの和: 4
**********
サイコロA: 2 サイコロB: 2
サイコロA、Bの和: 4
**********
サイコロA: 2 サイコロB: 6
サイコロA、Bの和: 8
**********
サイコロA: 3 サイコロB: 1
サイコロA、Bの和: 4
**********
サイコロA: 3 サイコロB: 5
サイコロA、Bの和: 8
**********
サイコロA: 4 サイコロB: 4
サイコロA、Bの和: 8
**********
サイコロA: 5 サイコロB: 3
サイコロA、Bの和: 8
**********
サイコロA: 6 サイコロB: 2
サイコロA、Bの和: 8
**********
サイコロA: 6 サイコロB: 6
サイコロA、Bの和: 12
**********
答え: 9 通り
コメント