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

Kotlin问题:每次重启App后Random生成结果均相同的解决方法

解决App重启后随机字符串重复的问题

问题原因

Kotlin的Array.random()方法默认依赖全局的Random实例,这个实例在App启动时会使用固定种子初始化,导致每次重启App后生成的随机序列完全一致——这是语言标准库的默认行为,并非Bug。

修复方案

要让每次重启都得到不同的随机结果,需要手动创建带动态种子的Random实例。最常用的动态种子是当前系统时间戳(System.currentTimeMillis()),因为每次启动App的时间都不一样,能保证随机生成器的初始状态唯一。

完整修复代码

将原按钮点击事件代码替换为以下版本:

button.setOnClickListener {
    // 用当前时间戳作为种子创建随机生成器
    val random = Random(System.currentTimeMillis())
    // 生成数组范围内的随机索引,获取对应字符串
    val randomValue = Carts[random.nextInt(Carts.size)]
    // 将结果设置到TextView
    tvvoorkant.text = randomValue
}

代码说明

  • 旧代码中的Carts.random()依赖全局固定种子的随机器,重启后随机序列重复;
  • 新代码通过Random(System.currentTimeMillis())创建了每次启动状态都不同的随机器,再用nextInt(Carts.size)生成合法的数组索引,确保每次重启后的随机结果都不重复。

注:如果是频繁生成随机数的场景,建议把Random实例作为类成员变量初始化一次;但对于单次点击的场景,当前写法完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:50:25