黑马程序员技术交流社区
标题:
random产生随机数每次都一样,求解。
[打印本页]
作者:
ehuashao
时间:
2014-3-30 17:01
标题:
random产生随机数每次都一样,求解。
本帖最后由 ehuashao 于 2014-3-30 21:17 编辑
在java中都是用Math.random方法或Random类来产生随机数的。
public static void main(String[] args) {
Random ran = new Random();
for(int i=1;i<4;i++){
System.out.println("第"+i+"次:"+ran.nextInt());
}
}
复制代码
每次产生的随机数都是不一样的没什么问题,但当我们用Random类的有参构造函数来初始化的时候,就有问题了,代码如下:
public static void main(String[] args) {
Random ran = new Random(1000);
for(int i=1;i<4;i++){
System.out.println("第"+i+"次:"+ran.nextInt());
}
}
复制代码
无论运行多少次每次得到的三个随机数都是一样的,没有改变。为什么用了有参的构造函数会有这样的问题啊。
作者:
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