random是伪随机,即种子确定的情况下,随机数序列是确定的。
所以种子就是随机数的密钥,如果构造函数没传种子,秘密则存在于nanotime的数值,猜这个数值会更难,1毫秒=1k微妙=1m纳秒=1b皮秒;如果你能准确的预测到毫秒,计算100万个序列必然有一个是对的;而如果用指定的种子,全部秘密就在那个种子里。纳秒数是个long,可以支持296年连续计数。
可见为random指定种子是个愚蠢的做法。
java为了可移植,使用了这个弱智的算法;不过,如果你要求很高,有SecureRandom,见api文档。
http://stackoverflow.com/questions/510462/is-system-nanotime-completely-useless
nano可靠吗,n2-n1<0?,老系统可能会。