我想知道是否有一种方法可以创建一个随机数生成器,它可以在两个整数之间生成一个数字,但是生成偶数的概率比生成奇数的概率高两倍。目前,我还没有找到类似或接近2倍概率的方法。
我想知道是否有一种方法可以创建一个随机数生成器,它可以在两个整数之间生成一个数字,但是生成偶数的概率比生成奇数的概率高两倍。目前,我还没有找到类似或接近2倍概率的方法。
简单但应该有效:
0.0f
- 1.0f
)(random.nextFloat()
)0.67f
,如果需要将随机整数递减或递增使其变为偶数,则返回值确保在随机整数是所需范围的边界值时,向正确方向递减或递增。
在评论中实现@SteveKuo的建议:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Please enter the minimum number that can be generated: ");
int min = scanner.nextInt();
System.out.print("Please enter the maximum number that can be generated: ");
int max = scanner.nextInt();
int evenOrOdd = 0 + (int)(Math.random() * ((2 - 0) + 1));
int random = 0;
if(evenOrOdd == 2) { // generate random odd number
if(max % 2 == 0) { --max; }
if(min % 2 == 0) { ++min; }
random = min + 2*(int)(Math.random() * ((max - min)/2+1));
} else { //get random number between [(min+1)/2, max/2] and multiply by 2 to get random even number between min and max
random = ((min+1)/2 + (int)(Math.random() * ((max/2 - (min+1)/2) + 1))) * 2;
}
System.out.printf("The generated random number is: %d", random);
}
}
在这里尝试一下!