ふくふくHukuhuku Inc.
EP.09Kids Python対象: 小6以上 10分公開: 2026-05-10

数あてAIを作ろう:プログラムが「考える」

1〜100の中で考えた数を、プログラムが平均7回で当てる。「二分探索」という考え方を体験する。

#小学生#アルゴリズム#二分探索
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

「1〜100の中で何か数字を考えて」と人に聞かれたら、何回で当てられる?適当に言うと、最悪100回かかる。でもプログラムは平均7回で当てるよ。これが という、コンピュータが得意な考え方。

1. 真ん中で聞いて、半分に絞る

プログラムの作戦はこう: 1. 「50 ですか?」と聞く 2. 答えが「もっと大きい」なら、1〜50 は捨てて、51〜100 だけ考える(半分に減った!) 3. 「75 ですか?」と聞く 4. もっと大きい?じゃあ 51〜75 を捨てて、76〜100 5. ...という調子で毎回半分にする。100 → 50 → 25 → 13 → 7 → 4 → 2 → 1。7回で必ず当たる

二分探索で「73」を当てる過程:50→75→62→68→71→72→73で7回
「真ん中で当ててから半分に絞る」を繰り返すと、100個の中から7回で当たる

2. 数あてAIのコード

colab で動かしてみる
Python
print("1〜100で数字を1つ考えて。私がそれを当ててみせる!")input("考えたら Enter を押してね")
low = 1high = 100count = 0while low <= high:    guess = (low + high) // 2  # 真ん中    count += 1    print(f"\n第{count}回:その数字は {guess}?")    answer = input("(正解=1, もっと大きい=2, もっと小さい=3): ")    if answer == "1":        print(f"やった! {count}回で当てたよ。")        break    elif answer == "2":        low = guess + 1    elif answer == "3":        high = guess - 1

3. 数学の不思議:

100個の中から7回。じゃあ 1000個 だと?答えは 10回(半分にし続けると10回で1個まで減る)。100万個でも 20回! これが という考え方。「2倍ずつ増やしたら何回で大きくなるか」を表す数学。100=2の約7乗、1000=2の約10乗、100万=2の約20乗

計算量 O(log n) の世界

と書く(EP.14 で詳しく扱う)。これは「問題が10倍になっても、3〜4ステップしか増えない」という、コンピュータの最強カテゴリの1つ。

次回予告

次回(EP.10)は、動物の鳴き声でクイズを作るよ。録音した音をプログラムで再生する。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp