0

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

这是我按下的键:

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

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

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

1 回答 1

3

inttodouble的转换优先于乘以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);
}

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

于 2012-06-18T01:42:39.537 回答