100 + Random100nextLong为什么会等于-1006715037030141991
根据Java中的Random类的nextLong方法的文档,该方法返回一个长整型的随机数,范围在Long.MIN_VALUE(-9223372036854775808)和Long.MAX_VALUE(9223372036854775807)之间。因此,表达式100 + Random(100).nextLong()的结果应该是一个在100到Long.MAX_VALUE之间的随机数。
然而,根据给出的结果-1006715037030141991,可以看出该结果小于100,这意味着表达式的结果不应该是这个随机数。
可能的解释是在代码中,Random(100)这部分可能是指使用种子值为100来初始化Random类的实例。这样做会导致Random类生成的随机数序列是确定性的,每次运行程序都会生成相同的随机数序列。因此,如果在代码的其他地方使用了Random类的实例,并且在调用nextLong方法之前调用了其他的next方法,那么可能会导致随机数序列的偏移,进而导致不同的随机数生成。
要解决这个问题,可以将Random类的实例化移动到表达式的外部,以便只实例化一次,并将生成的随机数用作表达式的一部分,例如:
Random random = new Random(); long randomLong = random.nextLong(); long result = 100 + randomLong;
原文地址: http://www.cveoy.top/t/topic/i8Cm 著作权归作者所有。请勿转载和采集!