日期:2014-05-20  浏览次数:20796 次

随机函数的问题
                Random r1 = new Random(10);
Random r2 = new Random(10);
System.out.println(r1.nextInt(10));
System.out.println(r1.nextInt(10));
System.out.println(r1.nextInt(10));
System.out.println(r2.nextInt(10));
System.out.println(r2.nextInt(10));
System.out.println(r2.nextInt(10));

这样子运行出来的随机数是一样的,为什么啊?求高手指教
------最佳解决方案--------------------
1、种子一样,你可以用for循环i当种子。
2、因为运行速度太快了,java取随机数是把种子和时间一起运算的,你用在每个中间插入Thread.sleep(10),再试试看。
------其他解决方案--------------------
new Random(10);两个Random都用的同一个seed. 所以随机数相同.
------其他解决方案--------------------
Random r1 = new Random();
Random r2 = new Random();System.out.println(r1.nextInt(10));
System.out.println(r1.nextInt(10));
System.out.println(r1.nextInt(10));
System.out.println(r2.nextInt(10));
System.out.println(r2.nextInt(10));
System.out.println(r2.nextInt(10));
这样写就不一样了 楼主这样的写法有人解释过 忘了 我就记住了这个是正确的


------其他解决方案--------------------
大家帮帮吗把
------其他解决方案--------------------
请问seed有什么作用啊?
------其他解决方案--------------------
刚试了一下,和时间没关系,呵呵,上面说错了,不好意思。
你可以把时间做种子,这样可以每次运行都不一样。
------其他解决方案--------------------


谢谢大家了   只能说这个seed使这个伪随机变的更假了