黑马程序员技术交流社区

标题: random产生随机数每次都一样,求解。 [打印本页]

作者: ehuashao    时间: 2014-3-30 17:01
标题: random产生随机数每次都一样,求解。
本帖最后由 ehuashao 于 2014-3-30 21:17 编辑

在java中都是用Math.random方法或Random类来产生随机数的。
  1. public static void main(String[] args) {
  2.                 Random ran = new Random();
  3.                 for(int i=1;i<4;i++){
  4.                         System.out.println("第"+i+"次:"+ran.nextInt());
  5.                 }
  6.         }
复制代码

每次产生的随机数都是不一样的没什么问题,但当我们用Random类的有参构造函数来初始化的时候,就有问题了,代码如下:
  1. public static void main(String[] args) {
  2.                 Random ran = new Random(1000);
  3.                 for(int i=1;i<4;i++){
  4.                         System.out.println("第"+i+"次:"+ran.nextInt());
  5.                 }
  6.         }
复制代码

无论运行多少次每次得到的三个随机数都是一样的,没有改变。为什么用了有参的构造函数会有这样的问题啊。

作者: osully    时间: 2014-3-30 17:37
看了下,Random(1000); 括号里只要输入一个数字,就代表产生了一个有固定顺序的随机码
除非你调用setSeed(long seed)方法改变值,才可以改变成另一个有固定顺序的随机码

不定义,Random()括号内的内容,就相当于,long seed 这个seed值是随机的,所以才会随机
作者: 老貓钓鱼    时间: 2014-3-30 17:47
种子一样,当然获取的随机值也一样了
作者: 一诺千金    时间: 2014-3-30 20:50
public static void main(String[] args) {
                Random ran = new Random();
                for(int i=1;i<4;i++){
                        System.out.println("第"+i+"次:"+ran.nextInt(1000));
                }
你的1000写错地方了吧。
作者: ehuashao    时间: 2014-3-30 21:17
一诺千金 发表于 2014-3-30 20:50
public static void main(String[] args) {
                Random ran = new Random();
                 ...

我用的是random的有参构造函数,没错。问题上面已经解答了。不过还是谢了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2