如何关联概率权重与变量?实现选后提升概率的简易AI
解决方案
核心问题是颜色与权重变量分离,导致无法高效关联选择结果与概率调整。用字典存储颜色与对应权重,就能直接通过选择的颜色修改权重,彻底替代繁琐的if语句。
优化后的代码示例
import random # 用字典存储颜色与初始权重,键值对直接关联 color_weights = { "red": 100, "blue": 100, "yellow": 100, "green": 100, "orange": 100, "purple": 100 } while True: # 从字典中提取颜色列表和对应的权重列表 color_list = list(color_weights.keys()) weights_list = list(color_weights.values()) # 生成3个不重复的颜色选项(若允许重复可去掉去重逻辑) selected_colors = random.choices(color_list, weights=weights_list, k=3) # 去重确保用户得到三个不同选择 selected_colors = list(dict.fromkeys(selected_colors)) while len(selected_colors) < 3: new_color = random.choice(color_list) if new_color not in selected_colors: selected_colors.append(new_color) # 展示选项给用户 print("请选择一个颜色:") for idx, color in enumerate(selected_colors, 1): print(f"{idx}. {color}") # 获取并验证用户输入 while True: try: user_input = int(input("输入选项编号:")) if 1 <= user_input <= 3: user_choice = selected_colors[user_input - 1] break else: print("请输入1-3之间的编号!") except ValueError: print("请输入有效的数字!") # 提升选中颜色的权重(数值可根据需求调整) color_weights[user_choice] += 50 print(f"已提升{user_choice}的出现概率,当前权重:{color_weights[user_choice]}\n")
关键优化点说明
- 字典关联颜色与权重:无需单独维护
p_red、p_blue等变量,直接通过color_weights[颜色名]读取或修改权重,扩展性极强——新增颜色只需在字典中加一行键值对,不用修改其他逻辑。 - 自动提取参数:
list(color_weights.keys())和list(color_weights.values())自动生成random.choices所需的参数,避免手动同步颜色和权重顺序。 - 输入验证:确保用户输入有效选项,避免程序崩溃。
- 去重逻辑:保证用户每次得到三个不同的颜色选项(若不需要去重,可删除相关代码)。
内容的提问来源于stack exchange,提问作者thecoolerfin
相关产品推荐
相关产品推荐

