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

Android Kotlin掷骰子功能异常:5个骰子均返回相同点数与图片求助

问题原因
  • 你只在点击事件触发时生成了1次随机数,5个骰子共用了同一个随机结果对应的图片资源,自然所有骰子展示的点数都完全一致。
  • 额外的写法问题:Random().nextInt(5)生成的是04的整数,加1后只能得到15的结果,只有异常分支才会走到6点骰子的逻辑,会导致6点出现概率远低于其他点数,不符合正常骰子的概率规则。
修复后的参考代码
val iv1 = findViewById(R.id.iv1) as ImageView
val iv2 = findViewById(R.id.iv2) as ImageView
val iv3 = findViewById(R.id.iv3) as ImageView
val iv4 = findViewById(R.id.iv4) as ImageView
val iv5 = findViewById(R.id.iv5) as ImageView
val btnRoll = findViewById<Button>(R.id.btnRoll)
// 复用Random实例,避免重复创建对象
private val random = Random()

// 封装获取随机骰子图片资源的方法
private fun getRandomDieRes(): Int {
    val randomInt = random.nextInt(6) + 1
    return when (randomInt) {
        1 -> R.drawable.die1
        2 -> R.drawable.die2
        3 -> R.drawable.die3
        4 -> R.drawable.die4
        5 -> R.drawable.die5
        else -> R.drawable.die6
    }
}

btnRoll.setOnClickListener {
    // 每个骰子单独生成随机点数
    iv1.setImageResource(getRandomDieRes())
    iv2.setImageResource(getRandomDieRes())
    iv3.setImageResource(getRandomDieRes())
    iv4.setImageResource(getRandomDieRes())
    iv5.setImageResource(getRandomDieRes())
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:09:03