java - 无法从 ListArray 中获取随机元素

标签 java android arrays debugging random

尝试在按下按钮时从 ListArray 中获取随机字符串。总是得到相同的第二个元素。无论数组有多大。

这是我按下的按键的内容:

int randIndex = getRandomIndex(ListArray.size());
String chosenItem = ListArray.get(randIndex);

方法 getRandomIndex 已预先声明,如下所示:

public int getRandomIndex(int size) {
        return (1+(int)Math.random()*size);
    };

最佳答案

intdouble的转换优先于乘以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/

相关文章:

java - Android Preference Image Picker - 如何在 DialogPreference 中接收结果

java - 如何使用 Jakarta POI 从 ms word 文件中读取内容

java - 使用 JDO 从数据存储区存储和检索数据

java - 使用 ThreeTen 在 Android 中显示日期时发生冲突

java - 为什么我的if语句未返回正确的结果?

ios - 当数组不只有整数类型数据时,如何获得数组元素的平均数?

java - 图像无法正确缩放

android - 如果您有多种产品口味(不同的远程服务器实例),如何处理 Play 商店 alpha/beta 测试

Android微调器没有触发onItemSelected

arrays - 无法读取 : variable isn't array