现附上一个链接:http://blog.sina.com.cn/s/blog_64d5f4bd0100h0zz.html
疑问代码:Random rand = new Random(47);
int nonce = rand.nextInt();
nonce的结果是:nonce=-1172028779,每回都是这个值,很奇怪
记录一些关键字句:
随机数不随机,是因为,
Random()它有两种形式的构造函数,分别是Random()和Random(long seed)。
Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,
Random(long seed)使用指定的seed作为发生器的种子。
随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。 如果两个Random对象使用相同的种子(比如都是25),并且以相同的顺序调用相同的函数,那它们返回值完全相同。
因为在不指定种子的构造函数时系统根据当前时间生成种子,每个种子对应一个数列,相同的种子会得到相同数列,而不是数值。所以如果在构造函数中指定种子,会得到同一个数列。
官方给出的解释:int nextInt() :返回下一个伪随机、均匀分布的int值从这个随机数生成器的序列。