java - Math.random() 如何用于数据分布?

标签 java

我在代码中使用 Math.random() 将数据分发到单独的存储桶中。 我想知道如果我在多个地方使用 Math.random(),它会使用不同的数字生成器还是相同的作为静态方法。

代码示例:

public void assignVariant1() {
    int c1 = 0 , c2=0 , c3=0 ,c4=0;
    for(int i = 0 ; i < 100000 ; i++)
    {
        if(Math.random() > 0.5)
        {
            c1++;
        }else
        {
            c2++;
        }

        if(Math.random() > 0.5)
        {
            c3++;
        }else
        {
            c4++;
        }
    }
    System.out.println("c1 + c2 "+ (c1+c2));
    System.out.println("c1 + c2 "+ (c3+c4));
}

在上面的代码中,它会为 Math.random() 调用使用相同的伪随机数生成器吗?

最佳答案

此处真正的答案是:阅读文档。

Math.random() 的 javadoc对此非常明确:

When this method is first called, it creates a single new pseudorandom-number generator, exactly as if by the expression

new java.util.Random()

This new pseudorandom-number generator is used thereafter for all calls to this method and is used nowhere else.

所以要点是:如果您对库类有疑问,请阅读这些类附带的文档。在元层面上:努力自己“回答”这样的问题;向其他人寻求解释可能看起来像是绕道而行;但它实际上减慢你的速度。

关于java - Math.random() 如何用于数据分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676378/

相关文章:

带分区的 Java Batch Step 返回错误的 batchStatus 和 exitStatus

java - 使用Java访问类路径中特定文件夹中的文件

java - 登录后 JSessionID 在资源请求上发生变化,这会使 session 失效

java - 参数显示为 arg0 但只是第一次?

java - 用于在tomcat中部署war文件的安装页面

Java 8 高级排序

java - java 程序中的更新程序

java - 在我的 android 编程代码 java.lang 中出现错误

java - 如果我可以在创建者类中拥有多个工厂方法,为什么我需要抽象工厂模式?

java - 如何使用 Apache POI 从 Powerpoint 中的幻灯片图中获取 DataXML