Android Studio中如何避免两个TextView的随机数重复?
解决Android中两个TextView生成不重复随机数的问题
嘿,我来帮你搞定这个重复随机数的问题!
你当前的代码里,每次onTick时分别调用randomNumber()给两个TextView赋值,这两次调用完全独立,所以很容易出现两个数重复的情况。要避免这种情况,我们只需要确保第二个随机数生成时和第一个不一样就行,这里给你两种实用的解决方案:
方案一:循环校验(简单直接)
先生成第一个随机数,然后生成第二个数时循环检查,直到和第一个数不同为止。修改你的onTick代码如下:
override fun onTick(millisUntilFinished: Long) { val firstNum = randomNumber() var secondNum = randomNumber() // 确保第二个数和第一个数不重复 while (secondNum == firstNum) { secondNum = randomNumber() } num1.text = firstNum.toString() num2.text = secondNum.toString() }
这种方法适合随机数范围较大的场景,重复概率低,循环几乎不会多跑几次。
方案二:洗牌取数(适合小范围随机数)
如果你的随机数可选范围很小(比如只有3-5个数值可选),循环校验可能会有多余的重复计算,这时候可以把所有可选数值放到列表里洗牌,直接取前两个:
override fun onTick(millisUntilFinished: Long) { // 假设你的随机数范围是1到10,根据实际情况修改 val numberPool = (1..10).toMutableList() numberPool.shuffle() // 打乱列表顺序 val firstNum = numberPool[0] val secondNum = numberPool[1] num1.text = firstNum.toString() num2.text = secondNum.toString() }
这种方法能保证绝对不重复,而且不需要循环判断,效率更高。
另外要注意:如果你的randomNumber()函数有固定的取值范围,最好把范围明确下来(比如指定生成1到100之间的整数),这样两种方案都能更精准地工作。修改后,你后续的数值比较和相乘运算就可以基于这两个不重复的数正常执行啦!
内容的提问来源于stack exchange,提问作者Osama Mohammed
相关产品推荐
相关产品推荐

