和が3の倍数になる確率( by生成AI)
ふと眼に止まってクスッと笑ってしまったこちらの投稿。
慶応の入試問題が元ネタかな?
生成AIはこういう問題に対して、非常に強い。
(以下perplexity無料版の出力。
正答+Pythonでの説明もかなりクオリティ高い)
1から10までの整数が記された10枚カードから3枚を抜き出したときに、数字の和が3の倍数となる確率の解き方
1. 問題の理解
1から10までの整数が記された10枚のカードから3枚を抜き出したときに、数字の和が3の倍数となる確率を求めます。
2. 全ての組み合わせの数を計算
まず、10枚のカードから3枚を選ぶ組み合わせの総数を計算します。組み合わせの数は次のように計算されます:
$$ \binom{10}{3} = \frac{10!}{3!(10-3)!} = 120 $$
3. 数字の和が3の倍数となる条件
次に、3枚のカードの和が3の倍数となる条件を考えます。3の倍数の性質を利用して、カードの数字を3で割った余りに注目します。
1から10までの数字を3で割った余りは次のようになります:
余り0: 3, 6, 9
余り1: 1, 4, 7, 10
余り2: 2, 5, 8
4. 3の倍数となる組み合わせ
和が3の倍数となるための条件は以下の3つです:
余りが全て同じ(0, 0, 0)、(1, 1, 1)、(2, 2, 2)
余りが異なる(0, 1, 2)
(1) 余りが全て同じ場合
余り0: (3, 6, 9) の組み合わせは1通り。
余り1: (1, 4, 7, 10) から3枚選ぶ組み合わせは $$\binom{4}{3} = 4$$ 通り。
余り2: (2, 5, 8) の組み合わせは1通り。
合計で $$1 + 4 + 1 = 6$$ 通り。
(2) 余りが異なる場合
余り0, 1, 2から1枚ずつ選ぶ組み合わせの数は次のように計算されます:
余り0から1枚選ぶ: 3通り
余り1から1枚選ぶ: 4通り
余り2から1枚選ぶ: 3通り
合計で $$3 \times 4 \times 3 = 36$$ 通り。
5. 確率の計算
和が3の倍数となる組み合わせの総数は $$6 + 36 = 42$$ 通りです。したがって、確率は次のように計算されます:
$$ \frac{42}{120} = \frac{7}{20} $$
6. 結論
1から10までの整数が記された10枚のカードから3枚を抜き出したときに、数字の和が3の倍数となる確率は $$\frac{7}{20}$$ です。
Pythonで上記をわかりやすく表示するプログラムを作成
from itertools import product, combinations
# 1から10までの数を3で割った余りで分類
remainder_0 = [3, 6, 9] # 3で割り切れる数
remainder_1 = [1, 4, 7, 10] # 3で割って1余る数
remainder_2 = [2, 5, 8] # 3で割って2余る数
print("3で割った余りによる分類:")
print(f"余り0の数: {remainder_0}")
print(f"余り1の数: {remainder_1}")
print(f"余り2の数: {remainder_2}")
# 組み合わせを表示する関数
def print_combinations(title, combs):
print(f"\n{title}:")
for i, comb in enumerate(combs, 1):
print(f" {i}. {comb} (合計: {sum(comb)})")
print(f" 総数: {len(combs)}")
# パターン1: 全て余り0
pattern1 = list(combinations(remainder_0, 3))
print_combinations("パターン1: 全て余り0", pattern1)
# パターン2: 余り0が1つ、余り1が1つ、余り2が1つ
pattern2 = list(product(remainder_0, remainder_1, remainder_2))
print_combinations("パターン2: 余り0が1つ、余り1が1つ、余り2が1つ", pattern2)
# パターン3: 全て余り1
pattern3 = list(combinations(remainder_1, 3))
print_combinations("パターン3: 全て余り1", pattern3)
# パターン4: 全て余り2
pattern4 = list(combinations(remainder_2, 3))
print_combinations("パターン4: 全て余り2", pattern4)
# 3の倍数になる組み合わせの総数
divisible_by_3 = len(pattern1) + len(pattern2) + len(pattern3) + len(pattern4)
print("\n3の倍数になる組み合わせの内訳:")
print(f"1. 全て余り0: {len(pattern1)}")
print(f"2. 余り0, 1, 2の組み合わせ: {len(pattern2)}")
print(f"3. 全て余り1: {len(pattern3)}")
print(f"4. 全て余り2: {len(pattern4)}")
print(f"\n3の倍数になる組み合わせの総数: {divisible_by_3}")
# 全ての組み合わせの数
total_combinations = len(list(combinations(range(1, 11), 3)))
print(f"全ての組み合わせの数: {total_combinations}")
# 確率の計算
probability = divisible_by_3 / total_combinations
print(f"\n確率: {divisible_by_3} / {total_combinations} = {probability:.4f}")
print(f"確率(パーセント): {probability * 100:.2f}%")
3で割った余りによる分類:
余り0の数: [3, 6, 9]
余り1の数: [1, 4, 7, 10]
余り2の数: [2, 5, 8]
パターン1: 全て余り0:
1. (3, 6, 9) (合計: 18)
総数: 1
パターン2: 余り0が1つ、余り1が1つ、余り2が1つ:
1. (3, 1, 2) (合計: 6)
2. (3, 1, 5) (合計: 9)
3. (3, 1, 8) (合計: 12)
4. (3, 4, 2) (合計: 9)
5. (3, 4, 5) (合計: 12)
6. (3, 4, 8) (合計: 15)
7. (3, 7, 2) (合計: 12)
8. (3, 7, 5) (合計: 15)
9. (3, 7, 8) (合計: 18)
10. (3, 10, 2) (合計: 15)
11. (3, 10, 5) (合計: 18)
12. (3, 10, 8) (合計: 21)
13. (6, 1, 2) (合計: 9)
14. (6, 1, 5) (合計: 12)
15. (6, 1, 8) (合計: 15)
16. (6, 4, 2) (合計: 12)
17. (6, 4, 5) (合計: 15)
18. (6, 4, 8) (合計: 18)
19. (6, 7, 2) (合計: 15)
20. (6, 7, 5) (合計: 18)
21. (6, 7, 8) (合計: 21)
22. (6, 10, 2) (合計: 18)
23. (6, 10, 5) (合計: 21)
24. (6, 10, 8) (合計: 24)
25. (9, 1, 2) (合計: 12)
26. (9, 1, 5) (合計: 15)
27. (9, 1, 8) (合計: 18)
28. (9, 4, 2) (合計: 15)
29. (9, 4, 5) (合計: 18)
30. (9, 4, 8) (合計: 21)
31. (9, 7, 2) (合計: 18)
32. (9, 7, 5) (合計: 21)
33. (9, 7, 8) (合計: 24)
34. (9, 10, 2) (合計: 21)
35. (9, 10, 5) (合計: 24)
36. (9, 10, 8) (合計: 27)
総数: 36
パターン3: 全て余り1:
1. (1, 4, 7) (合計: 12)
2. (1, 4, 10) (合計: 15)
3. (1, 7, 10) (合計: 18)
4. (4, 7, 10) (合計: 21)
総数: 4
パターン4: 全て余り2:
1. (2, 5, 8) (合計: 15)
総数: 1
3の倍数になる組み合わせの内訳:
1. 全て余り0: 1
2. 余り0, 1, 2の組み合わせ: 36
3. 全て余り1: 4
4. 全て余り2: 1
3の倍数になる組み合わせの総数: 42
全ての組み合わせの数: 120
確率: 42 / 120 = 0.3500
確率(パーセント): 35.00%
勉強の仕方が大きく変わりつつある今日この頃。
(しかし、使いこなしてるのは一定層のみで広がらないんだよねぇ・・・)
この記事が参加している募集
公務員で受取出来ませんので、お気持ちだけで大丈夫です~