【发布时间】:2020-11-05 05:57:52
【问题描述】:
根据我的研究,每个人似乎都说 java random 在未指定时使用系统时间(以毫秒为单位)作为其默认种子。因此,如果我们在生成随机数的那一刻有系统时间,那么我们应该能够知道生成该数字的种子是什么。 所以,
(new Random()).nextLong;
long time = System.currentTimeMillis();
(new Random(time)).nextLong
应该产生两个相同的数字,因为种子是相同的,对吧?它没有使用 TimeMillis 作为种子,或者我做错了其他事情。
非常感谢您的帮助,我已经搜索了几个小时,但似乎找不到一致的答案。我只想知道当没有指定种子时它是如何找到种子的。我的想法可能是它确实使用了系统时间,但在最终种子之前它会乘以它等。
再次感谢:)
【问题讨论】:
-
我想说,由于随机函数需要时间,
System.currentTimeMillis()与用于第一个随机种子时的不同。 -
无论如何人们似乎都没有意识到the source code for the standard library is readily available 并且大多非常容易阅读。
-
我检查了前后的时间,两者的时间相同,所以应该不是那个
-
Federico 我在哪里可以找到它?我找了一会儿,不知怎么只找到了一个旧版本,谢谢
标签: java random random-seed