为何指定种子的Random类nextInt()输出始终固定?
为什么
new Random(10).nextInt()每次输出都是-1157793070? - Java里的
Random是伪随机数生成器,它的随机数序列完全由初始化时的种子决定。你每次都用固定的种子10创建实例,相当于把生成器重置到了同一个初始状态,所以生成的第一个随机数必然是固定的-1157793070。 - 伪随机的核心逻辑是:基于种子通过数学算法生成可预测的序列,只要种子不变,整个序列就不会变。比如你连续调用几次
nextInt(),每次得到的后续数字也都是固定的,示例代码如下:
不管运行多少次这段代码,输出结果都会完全一致。Random r = new Random(10); System.out.println(r.nextInt()); // 输出-1157793070 System.out.println(r.nextInt()); // 输出1913984760 System.out.println(r.nextInt()); // 输出1107254586 - 如果想要每次运行得到不同的随机数,别指定固定种子,直接用无参的
new Random()即可,它会自动用系统时间等动态值作为种子,保证每次生成器的初始状态不一样。
内容的提问来源于stack exchange,提问作者HellishHeat
相关产品推荐
相关产品推荐

