public static void main(String[] args) { 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的概率。 虽然概率分布不是很均匀,但是可以实现你的要求。
Math.round(Math.random());
在其它范围,可用Random中的一个别next(n)方法就可以了。
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的概率。
虽然概率分布不是很均匀,但是可以实现你的要求。
投机取巧一下哈
if (d <= 1)//取小于等于1的部分,效率减半
System.out.println(d);
这样行不
Random rand = new Random();
double r = rand.nextDouble();
if (r == 0) {
r = rand.nextInt(2);
}