int i = (int)(Math.random() * CHANGERATE); switch(i) { case 0: case 1: result = Math.random(); break; case 2: result = 1.0; break; default: result = Math.random(); break; } System.out.println(result); } 通过调整CHANGERATE的值可以调整产生1.0的概率。 虽然概率分布不是很均匀,但是可以实现你的要求。
final int CHANGERATE = 3;
double result;
int i = (int)(Math.random() * CHANGERATE);
switch(i) {
case 0:
case 1: result = Math.random();
break;
case 2: result = 1.0;
break;
default: result = Math.random();
break;
}
System.out.println(result);
} 通过调整CHANGERATE的值可以调整产生1.0的概率。
虽然概率分布不是很均匀,但是可以实现你的要求。
java.util.Random
nextDouble()
nextDouble() 能够产生0包括0到1之间的double值
java.lang.Math
Math.random ()能够产生0 包括0 到1之间的double值
如果使用 new Random();的话,jdk1.4的较低小版本号有bug
后来修正了。