You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现随机数选择概率动态调整?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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:40:25