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

游戏开发需求:实时随机选取不重复数字并锁定已选数字

解决方案:实时选取不重复的1-100数字

你的核心需求是每次实时选一个1-100的数字,且选过的不能再被选中。之前的代码只记录了上一个选中的数字,不仅没法避免重复更早的数字,也只能运行两次,根本满足不了持续选新数字的需求。

最直接的解决办法是用**集合(set)**来存储所有已被锁定的数字——集合的元素唯一性刚好适配这个需求,而且判断某个数字是否已被选中的效率很高。

完整代码实现

from random import randint

# 用集合存已选中的数字,确保不会重复
selected_numbers = set()

def get_unique_number():
    # 循环生成随机数,直到找到未被选中的
    while True:
        num = randint(1, 100)
        if num not in selected_numbers:
            selected_numbers.add(num)  # 锁定该数字
            return num

# 测试调用
# 第一次选数字
first_num = get_unique_number()
print(first_num)

# 第二次选数字(肯定和第一次不同)
second_num = get_unique_number()
print(second_num)

# 可以重复调用,直到1-100所有数字都被选完

补充:处理选完所有数字的边界情况

如果游戏里需要考虑“所有数字都被选完”的情况,可以给函数加个判断,避免无限循环:

def get_unique_number():
    if len(selected_numbers) >= 100:
        raise ValueError("1-100的数字已经全部被选中了")
    while True:
        num = randint(1, 100)
        if num not in selected_numbers:
            selected_numbers.add(num)
            return num

这样当所有数字都被选完时,函数会抛出明确的错误,你可以在游戏逻辑里捕获这个错误,做对应的处理(比如提示玩家、重置数字池等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:56:03