java 随机数 老是产生一样的数,怎么搞?

package Queue;

import java.util.Random;

public class Test1 {
static Random r = new Random();
public double Expon(float rmean)
{
double u,v;
u=Drand();
v=-rmean*Math.log(u);
return(v);
}

public double Drand()
{
double x;
int i;
// for(i=0;i<20;i++)
x=65539*r.nextFloat()+1743251541;
x=x%2147483638;
return(x/2147483638);
}
public static void main(String[] args) {
Test1 t = new Test1();

System.out.println("随机数 到达间隔时间");
for(int i = 0; i<10; i++){
double rnd = t.Expon(10);
System.out.printf("%.3f\t",t.Drand());
System.out.printf("%.3f",rnd);
System.out.println();
}
}

}
结果老是:
随机数 到达间隔时间
0.812 2.085
0.812 2.085
0.812 2.085
0.812 2.085
0.812 2.085
0.812 2.085
0.812 2.085
0.812 2.085
0.812 2.085
0.812 2.085
怎么让他不同呢??

第1个回答  2010-07-02
你for循环里面的东西都不跟着i变化,那当然随便怎么循环还是一样的咯

这跟你不写for循环手动run十次是一样的效果。

话说,你的Random貌似只生成了一个种子
第2个回答  2010-06-29
直接Math.random()就会产生一个0-1之间的浮点数。
你要产生多大的浮点数 在后面乘上一个基数就可以了。
如:Math.random()*(1743251541+65539)
第3个回答  2010-06-29
for(int i = 0; i<10; i++){
double rnd = t.Expon(10);
System.out.printf("%.3f\t",t.Drand());
System.out.printf("%.9f",rnd);//把这里改成9看看..因为你那是取小数点位数的问题
System.out.println();
}

这个Expon方法返回的都是2.085******的数字所以你保留3位小数当然都是2.085本回答被提问者采纳
第4个回答  2010-06-29
随机数是这样产生的么,
看我的吧

public static void main(String[] args) throws InterruptedException {
while (true) {
Thread.sleep(1000);
String value2 = String.valueOf(Math.random());
System.out.println(value2);
}
}
第5个回答  2010-06-29
用Random类的nextDouble(10)方法
相似回答