Python猜数字游戏:集成高级AI对手
游戏设计与AI算法
基本规则
游戏的基本规则保持不变:系统生成一个1到100之间的随机数,玩家和AI轮流尝试猜测这个数字,系统根据每次猜测提供反馈。
高级AI算法
这个高级AI它维护一个概率分布,并根据每次猜测的反馈来调整这个分布。这种方法允许AI更智能地猜测,更接近人类的猜测方式。
代码实现与解析
让我们详细查看下面的代码实现,以及每部分代码的功能:
import random import numpy as np # 导入NumPy库 class AdvancedAI: def __init__(self, lower_bound, upper_bound): # 初始化AI的猜测范围和概率分布 self.lower_bound = lower_bound self.upper_bound = upper_bound self.prob_distribution = np.ones((upper_bound - lower_bound + 1,)) / (upper_bound - lower_bound + 1) self.guess_range = list(range(lower_bound, upper_bound + 1)) def update_distribution(self, guess, feedback): # 根据反馈更新概率分布 if feedback == "太大了": self.prob_distribution[self.guess_range.index(guess):] *= 0.5 elif feedback == "太小了": self.prob_distribution[:self.guess_range.index(guess) + 1] *= 0.5 self.prob_distribution /= np.sum(self.prob_distribution) def make_guess(self): # 基于当前概率分布进行猜测 return np.random.choice(self.guess_range, p=self.prob_distribution) def feedback_for_guess(guess, target): # 提供猜测的反馈 if guess < target: return "太小了" elif guess > target: return "太大了" else: return "正确" def guess_number_game_with_advanced_ai(): number_to_guess = random.randint(1, 100) attempts = 0 ai = AdvancedAI(1, 100) print("欢迎来到猜数字游戏!") print("我已经想好了一个1到100之间的数字。") while True: # 玩家猜测 try: guess = int(input("请输入你的猜测: ")) except ValueError: print("请输入一个有效的数字。") continue attempts += 1 player_feedback = feedback_for_guess(guess, number_to_guess) if player_feedback == "正确": print(f"恭喜你!正确答案就是{number_to_guess}。") print(f"你共尝试了{attempts}次。") break else: print(player_feedback) # AI猜测 ai_guess = ai.make_guess() print(f"AI猜测的数字是:{ai_guess}") ai_feedback = feedback_for_guess(ai_guess, number_to_guess) ai.update_distribution(ai_guess, ai_feedback) if ai_feedback == "正确": print("AI猜对了!") break attempts += 1 if __name__ == "__main__": guess_number_game_with_advanced_ai()
代码注释
- AdvancedAI 类:定义了AI的行为。它使用概率分布来决定每次的猜测。
- update_distribution 方法:根据每次猜测的反馈更新概率分布。
- make_guess 方法:基于当前的
概率分布进行猜测。
- feedback_for_guess 函数:根据猜测和目标数字提供反馈。
- guess_number_game_with_advanced_ai 函数:游戏的主要逻辑,包括玩家的输入和AI的猜测。
让我们模拟一次运行上述高级AI猜数字游戏的情景。在这个示例中,我们假设游戏生成的目标数字是42。以下是可能的一次游戏运行结果:
欢迎来到猜数字游戏! 我已经想好了一个1到100之间的数字。 请输入你的猜测: 60 太大了,再试试看! AI猜测的数字是:55 太大了,再试试看! 请输入你的猜测: 30 太小了,再试试看! AI猜测的数字是:40 太小了,再试试看! 请输入你的猜测: 45 太大了,再试试看! AI猜测的数字是:43 太大了,再试试看! 请输入你的猜测: 42 恭喜你!正确答案就是42。 你共尝试了5次。
在这个运行示例中,玩家和AI轮流猜测数字。每次猜测后,游戏都会提供反馈,指示数字是太大、太小还是正确。AI的猜测基于其维护的概率分布进行,而玩家则根据自己的直觉或策略猜测。最终,玩家在第五次尝试中猜中了数字。
AI算法原理
AI通过维护一个概率分布来决定其猜测。这个分布根据之前的猜测不断更新,从而让AI可以根据已有的信息做出更加合理的猜测。当AI猜测一个数字时,它会根据这个数字的大小相应地调整概率分布,降低不太可能的数字的概率,并重新标准化这个分布。