对于下面的程序,为什么显示都结果是“i=58,j=55”? 高手指教一下。
import java.until.*;
public class Bool{
public static void main(String[] args){
Random rand = new Random(47);
int i=rand.nextInt(100);
int i=rand.nextInt(100);
System.out.println("i="+1);
System.out.println("j="+j);
}/*Output:
i=58;
j=55;
*///:~
import java.until.*;
public class Bool{
public static void main(String[] args){
Random rand = new Random(47);
int i=rand.nextInt(100);
int i=rand.nextInt(100);
System.out.println("i="+1);
System.out.println("j="+j);
}/*Output:
i=58;
j=55;
*///:~
Random rand=new Random();
int i=rand.nextInt(100);
int j=rand.nextInt(100);
这样才会得到0~100不同的数.
public static void main(String[] args){
Random rand = new Random(47);
int i=rand.nextInt(100);
int j=rand.nextInt(100);
System.out.println("i="+i);
System.out.println("j="+j);
}
}你是以47作为种子的,所以每次结果都会一样的
大致形象的解释是:
每次结果都在前一个值的基础之上产生一个valueOff偏移值,
也就是说首先i在种子47之上产生一个valueOff,然后在跟种子
通过算法运算得到了58,这个结果会保存一个变量value里,
再然后返回结果给i,而j在保存的value基础之上通过算法运算
又产生一个新的valueOff,然后在跟value进行一定的运算得到结果
保存到value里面,然后在返回结果给j,如此就是说每次结果都会相同
sun公司有自己的一套产生偏移值的算法,具体算法你看源代码就知道了。
形象的说47就像你播得第一粒种子,该种子可以产生其他的新种子,每次都
会储存到value里,然后由value产生下一粒,既而每次都应该是相同的daima222 应该明白了吧你可以Random rand = new Random();那么每次就不一样啦,因为产生
执行的valueOff都会不一样的
或者可以是Random rand = new Random(new Date().getTime());
也会是每次结果不一样的
具体情况请参看jdk下的src
public static void main(String[] args){
Random rand = new Random(47);
int i=rand.nextInt(100);
int j=rand.nextInt(100);
System.out.println("i="+i);
System.out.println("j="+j);
}
}你是以47作为种子的,所以每次结果都会一样的
大致形象的解释是:
每次结果都在前一个值的基础之上产生一个valueOff偏移值,
也就是说首先i在种子47之上产生一个valueOff,然后在跟种子
通过算法运算得到了58,这个结果会保存一个变量value里,
再然后返回结果给i,而j在保存的value基础之上通过算法运算
又产生一个新的valueOff,然后在跟value进行一定的运算得到结果
保存到value里面,然后在返回结果给j,如此就是说每次结果都会相同
sun公司有自己的一套产生偏移值的算法,具体算法你看源代码就知道了。
形象的说47就像你播得第一粒种子,该种子可以产生其他的新种子,每次都
会储存到value里,然后由value产生下一粒,既而每次都应该是相同的daima222 应该明白了吧你可以Random rand = new Random();那么每次就不一样啦,因为产生
执行的valueOff都会不一样的
或者可以是Random rand = new Random(new Date().getTime());
也会是每次结果不一样的
具体情况请参看jdk下的src
别人给你的答案不如自己理解的深刻。
Random rand=new Random();
int i=rand.nextInt(100);
int j=rand.nextInt(100);
这样才会得到0~100不同的数.
就是这个样子...楼主是不是看的Thinking in java啊...里面的例子基本都用47做种子
public static void main(String[] args){
Random rand = new Random(47);
int i=rand.nextInt(100);
int j=rand.nextInt(100);
System.out.println("i="+1);
System.out.println("j="+j);
}
}
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
haveNextNextGaussian = false;
}