如果我在Random中设置种子,为什么总是在下面的代码中得到相同的随机数:
private static void createArray(int[] x) {
for(int i =0; i<x.length; i++){
Random random = new Random(500l);
x[i] = random.nextInt(100000); //53695
}
}
我为每次跑步和整个循环获得53695。
答案 0 :(得分:2)
因为当你在伪随机数发生器中使用相同的种子时会发生这种情况。它不是随机的,只是看起来“随机”,但这完全归功于确定性的数学公式。
如果您需要更好的随机性,请使用SecureRandom
。
以下是一些提供“有趣”“随机”数字的种子示例: http://insights.dice.com/2014/01/24/generating-random-numbers-javas-random-class/