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
相关产品推荐
相关产品推荐

