无法从List Array中获取随机元素

时间:2012-06-18 01:40:08

标签: 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);
    };

1 个答案:

答案 0 :(得分:3)

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);
}

这更具可读性,可确保随机数的均匀分布。