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

如何使用randint生成覆盖指定全范围、符合循环次数要求的随机整数?

原代码问题说明
  • 原逻辑中每次循环独立调用randint(1,5)生成randomEvent,完全随机的情况下存在概率缺失1~5中的某一个或多个数值,无法满足覆盖要求。
核心实现思路

要同时满足随机和覆盖全1~5数值两个要求,可采用预生成+打乱的方案,全程仅使用randint()方法:

  1. 先构造包含1、2、3、4、5的基础列表,确保所有要求数值必然出现
  2. 额外生成5个1~5的随机整数,和基础列表拼接得到总长10的列表
  3. 用Fisher-Yates洗牌算法打乱列表顺序,保证最终结果的随机性
修改后完整代码
from random import randint

eventList = []
taskList = []
dayList = []

def getEventList():
    eventList.sort()
    return eventList

def getTaskList():
    return taskList

def getDayList():
    return dayList

def generateData():
    # 预先生成符合覆盖要求的10个随机event
    event_pool = [1, 2, 3, 4, 5]
    # 补全剩余5个随机数值
    for _ in range(5):
        event_pool.append(randint(1, 5))
    # Fisher-Yates 洗牌,仅使用randint方法
    for i in range(len(event_pool)-1, 0, -1):
        swap_idx = randint(0, i)
        event_pool[i], event_pool[swap_idx] = event_pool[swap_idx], event_pool[i]
    
    current_event_idx = 0
    while len(getTaskList()) < 10:
        randomEvent = event_pool[current_event_idx]
        randomTask = randint(10, 30)
        randomDay = randint(1, 9)

        eventList.append(randomEvent)
        dayList.append(randomDay)
        current_event_idx += 1

        if randomTask not in getTaskList():
            taskList.append(randomTask)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:03