如何实现随机数选择概率动态调整?Python/Pygame代码优化需求
概率动态调整的Pygame数字选择实现
需求说明
实现一个Pygame程序,初始时等概率随机选择1或2:
- 当选中数字1时,将下一次选中1的概率提升10%
- 当选中数字2时,将下一次选中2的概率提升15%
完整修改代码
import pygame, random, sys pygame.init() SCREEN_WIDTH = 500 SCREEN_HEIGHT = 500 BLACK = (0, 0, 0) WHITE = "#FFFFFF" win = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("Dynamic Probability Test") # 初始化概率,初始时1和2各50%概率 prob_1 = 0.5 prob_2 = 0.5 def update_display(selected_num): win.fill(BLACK) text_font = pygame.font.Font('freesansbold.ttf', 100) num_text = text_font.render(str(selected_num), True, WHITE) text_rect = num_text.get_rect() text_rect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2) win.blit(num_text, text_rect) pygame.display.update() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: # 根据当前概率选择数字 selected = random.choices([1, 2], weights=[prob_1, prob_2], k=1)[0] # 更新概率 if selected == 1: prob_1 += 0.1 prob_2 = 1 - prob_1 else: prob_2 += 0.15 prob_1 = 1 - prob_2 # 刷新显示选中的数字 update_display(selected)
关键修改说明
- 概率变量初始化:新增
prob_1和prob_2变量记录当前选中1和2的概率,初始各为50%。 - 加权随机选择:使用
random.choices()替代random.randint(),通过weights参数传入当前概率实现非等概率选择。 - 概率动态更新:每次选中数字后,对应概率增加指定比例(1加10%,2加15%),另一数字概率自动调整为
1 - 对应概率,保证总概率和为1。 - 代码结构优化:将显示更新逻辑封装为
update_display函数,统一事件处理到主循环,修复原代码中的缩进错误和重复事件处理问题。
内容的提问来源于stack exchange,提问作者AraAraSayonnara
相关产品推荐
相关产品推荐

