java - 如何在 Java 中使用 Math.random() 生成等概率随机数

标签 java random numbers equals probability

<分区>

我目前正在做一个练习,我需要生成一个随机数,它可以是 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/

相关文章:

PHP:生成不包括(0、1、O 和 L)的随机代码

algorithm - 将均匀分布转换为肥尾分布

javascript - 如何在 javascript 中将拉丁数字转换为阿拉伯数字?

javascript - JQUERY替换括号中的负整数

java - Scala - 如何过滤 KStream(Kafka Streams)

java - 如何在同一类中的静态方法中抛出异常

java - servlet 应用程序不工作,虽然 tomcat 工作正常

C++ - 随机选择字符串而不选择它超过一次

java - 为 JVM 编译 C 代码或在 JVM 中嵌入 C 运行时

c++ - 回文测试函数