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

Swift 4.2:如何从问题数组中选取多个随机元素?

在Swift 4.2中选取若干随机不重复元素的方法

嘿,这个需求太常见了!在Swift 4.2及后续版本里,苹果给集合类型加了专门的随机化API,能轻松搞定你的问题——不管是从5个问题里选3个,还是从100个里挑10个,都简单得很。

最适合测验应用的方案:打乱数组后取前N个(不重复)

测验肯定不能重复展示同一道题,所以这种方法是首选:

  1. 用shuffled()把原数组随机打乱顺序
  2. 用prefix(_:)选取前N个元素,就能得到N个不重复的随机问题

代码示例:

let questionList = ["Question1","Question2","Question3","Question4","Question5", /* ... 更多问题 */]
let numberOfQuestionsToPick = 10 // 你想要选取的数量

// 处理数组元素不足的情况(比如数组只有8个问题,最多只能选8个)
let safePickCount = min(numberOfQuestionsToPick, questionList.count)
// 获取随机不重复的问题(转成数组方便后续使用)
let selectedQuestions = Array(questionList.shuffled().prefix(safePickCount))

// 打印结果
print(selectedQuestions)

这个方法的优势很明显:shuffled()是系统优化过的API,哪怕是上千个元素的数组也能快速处理,而且代码简洁易懂,可读性拉满,完全适配你的测验场景。

可选方案:允许重复的随机选取(一般测验用不上)

如果你的场景允许重复展示同一道题,可以直接循环调用randomElement():

var selectedQuestions: [String] = []
let pickCount = 10

for _ in 0..<pickCount {
    if let randomQuestion = questionList.randomElement() {
        selectedQuestions.append(randomQuestion)
    }
}

不过这种方法会有概率出现重复问题,所以只适合不限制重复的特殊场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:17:30