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

如何在Python中为石头剪刀布选项分配指定百分比概率?

为石头剪刀布游戏的选项分配自定义概率

问题背景

现有一款石头剪刀布Python程序,通过random.choice()让电脑随机选择三个选项。需求是添加第四个选项,且该选项的选中概率仅为1%,其余三个选项均分剩下的99%概率。

解决方案

使用Python的random.choices()函数替代random.choice(),该函数支持通过weights参数为每个选项指定权重,以此实现自定义概率分配。

修改后的完整代码

import random

# 更新选项列表,添加第四个选项(示例为"SuperMove")
possible_actions = ["Rock", "Paper", "Scissors", "SuperMove"]
# 分配权重:三个原有选项各占33%,新选项占1%(权重总和为100,对应百分比)
weights = [33, 33, 33, 1]

user_action = input("Choose: Rock, Paper, Scissors, SuperMove")
# 使用random.choices(),注意该函数返回列表,取第一个元素
computer_action = random.choices(possible_actions, weights=weights, k=1)[0]

print(f"\nYou Chose {user_action}, Computer Chose {computer_action}.\n")

if user_action == computer_action:
    print(f"Both player chose {user_action}. You Tied!")
elif user_action == "Rock":
    if computer_action == "Scissors":
        print("Rock smashes scissors! You win!")
    elif computer_action == "Paper":
        print("Paper covers rock, you lose!")
    else:  # 处理电脑选SuperMove的情况
        print("Computer used SuperMove! You lose!")
elif user_action == "Paper":
    if computer_action == "Rock":
        print("Paper covers rock, You Win!")
    elif computer_action == "Scissors":
        print("Scissors cut the paper into shreds! You lose!")
    else:
        print("Computer used SuperMove! You lose!")
elif user_action == "Scissors":
    if computer_action == "Paper":
        print("Scissors cut the paper into shreds! You win!")
    elif computer_action == "Rock":
        print("Rock smashes scissors! You lose!")
    else:
        print("Computer used SuperMove! You lose!")
elif user_action == "SuperMove":
    # 可自定义SuperMove的胜负规则
    if computer_action != "SuperMove":
        print("Your SuperMove crushes everything! You win!")

关键说明

  • random.choices(population, weights=None, k=1):population是待选列表,weights是对应每个元素的权重(权重值无需严格等于百分比,只需比例正确,比如也可以用[99,99,99,3],比例和[33,33,33,1]一致),k是选择的数量,这里取1个所以取列表第一个元素。
  • 权重分配逻辑:总概率100%,新选项占1%,剩下99%由三个原有选项平分,每个占33%,因此权重设置为[33,33,33,1]。
  • 代码中补充了新选项的胜负判断逻辑,可根据需求自行调整规则。

内容的提问来源于stack exchange,提问作者RyanCSB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:13:38