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

在Kotlin中如何生成两个随机数且第二个不与第一个值重复

实现方案

方案1:适用于仅需2个不重复值的场景

有两种常用写法,效果完全一致:

写法A:过滤取值范围

直接从1-69的范围中排除已选中的第一个值,再取随机数,写法直观易读:

val firstNumber = (1..69).random()
val secondNumber = (1..69).filterNot { it == firstNumber }.random()

写法B:重复取值直到不重复

如果不想做集合过滤,也可以用循环重试,在当前取值范围很小的场景下性能差异可以忽略:

val firstNumber = (1..69).random()
var secondNumber: Int
do {
    secondNumber = (1..69).random()
} while (secondNumber == firstNumber)

方案2:适用于需要生成3个及以上不重复值的场景

如果后续还要取出更多不重复的随机数,提前对范围做乱序处理效率更高,不用每次做过滤或重试:

// 生成1-69的乱序列表,所有元素天然不重复
val shuffledPool = (1..69).shuffled()
val firstNumber = shuffledPool[0]
val secondNumber = shuffledPool[1]
// 后续需要第N个不重复值,直接取shuffledPool[N-1]即可

补充说明

  • 以上所有方案都保证两个随机数取值都在1-69范围内,且不会重复
  • 原代码中的变量名使用了复数形式firstNumbers/secondNumbers,但实际存储的是单个Int值,建议调整为单数形式,更符合Kotlin编码规范,可读性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:05