尝试在按下按钮时从 ListArray 中获取随机字符串。总是得到相同的第二个元素。无论数组有多大。
这是我按下的按键的内容:
int randIndex = getRandomIndex(ListArray.size());
String chosenItem = ListArray.get(randIndex);
方法 getRandomIndex
已预先声明,如下所示:
public int getRandomIndex(int size) {
return (1+(int)Math.random()*size);
};
最佳答案
从int
到double
的转换优先于乘以size
。当您将 Math.random()
转换为 int
时,小数点会被删除,结果为 0
。因此,getRandomIndex
将始终返回 1
。
换句话说,
return (1 + (int) [some double variable] * size);
与
相同return 1 + (0)*size;
与
相同return 1;
<小时/>
修复它:
private static final Random rand = new Random();
public int getRandomIndex(int size) {
return rand.nextInt(size);
}
这更具可读性并确保随机数的均匀分布。
关于java - 无法从 ListArray 中获取随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076130/