<分区>
我目前正在做一个练习,我需要生成一个随机数,它可以是 4 个值之一。 (注意我只允许使用 Math.random())
0 1个 2个 或 3
目前我正在使用这个:randno = (int) (Math.random()*4);//范围 0-3
但是,结果的概率必须相等。到目前为止,我的测试(尽管缺少该方法)表明 3 的出现次数远远少于其他数字。
这是巧合吗?或者我的生成器的概率不相等。
谢谢!
<分区>
我目前正在做一个练习,我需要生成一个随机数,它可以是 4 个值之一。 (注意我只允许使用 Math.random())
0 1个 2个 或 3
目前我正在使用这个:randno = (int) (Math.random()*4);//范围 0-3
但是,结果的概率必须相等。到目前为止,我的测试(尽管缺少该方法)表明 3 的出现次数远远少于其他数字。
这是巧合吗?或者我的生成器的概率不相等。
谢谢!
最佳答案
您的代码运行良好:
public static void main(String[] args) {
int countZero = 0;
int countOne = 0;
int countTwo = 0;
int countThree = 0;
for(int i=0; i<400000; i++){
int randno = (int)(Math.random() * ((3) + 1));
if(randno == 0){
countZero++;
}
else if(randno == 1){
countOne++;
}
else if(randno == 2){
countTwo++;
}
else if(randno == 3){
countThree++;
}
}
System.out.println("Zero: " + countZero);
System.out.println("One: " + countOne);
System.out.println("Two: " + countTwo);
System.out.println("Three: " + countThree);
}
输出:
Zero: 99683
One: 99793
Two: 100386
Three: 100138
关于java - 如何在 Java 中使用 Math.random() 生成等概率随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19465963/