Kotlin如何简便生成指定区间随机数 解决random()导入失败问题
Kotlin指定区间随机数实现方案
(100..200).random() 是Kotlin 1.3+标准库内置的区间扩展函数,无法识别、导入失败基本是项目Kotlin版本低于1.3,或者Gradle同步异常导致标准库未正确加载,可根据自己项目情况选以下方案:
方案1:修复环境直接用官方简便写法(推荐)
这是Kotlin官方提供的最简洁实现,不需要额外写工具类,修复环境后直接可用:
- 打开项目根目录
build.gradle文件,将Kotlin版本升级到1.3及以上稳定版(当前主流稳定版为1.8、1.9系列) - 确认app模块的依赖中引入了Kotlin标准库,一般新建Kotlin项目会自动添加,缺失的话补全对应依赖即可:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - 点击Sync Now同步Gradle,同步完成后不需要额外导包,直接写
val randomNumber = (100..200).random()即可生成100~200(包含两端边界)的随机整数。
方案2:低版本Kotlin兼容写法
如果暂时无法升级项目Kotlin版本,可以直接用Kotlin Random类的nextInt方法实现,逻辑和上述官方扩展函数完全一致:
import kotlin.random.Random // 注意nextInt第二个参数是**开区间**,要包含200的话结束值传201 val randomNumber = Random.nextInt(from = 100, until = 201)
如果需要生成不包含右边界的区间随机数,直接把右边界值传入until参数即可,比如生成100~199的随机数就写Random.nextInt(100, 200)。
方案3:极老版本兜底写法
如果项目Kotlin版本过低,连kotlin.random包都无法识别,可以直接用JDK原生的Random类实现,全版本兼容:
import java.util.Random val randomInstance = Random() // 计算规则:nextInt(区间总长度) + 区间起始值 // 100到200总长度为200-100+1=101,因此nextInt传101 val randomNumber = randomInstance.nextInt(101) + 100
注意:不推荐用Android专属的随机数API,上述两种Random类是JDK/Kotlin内置实现,全Android版本兼容,不需要做系统版本判断。
内容的提问来源于stack exchange,提问作者Bo Z
相关产品推荐
相关产品推荐

