【问题标题】:Generating normal distribution [closed]生成正态分布
【发布时间】:2020-06-18 00:44:22
【问题描述】:

问题 - 假设理发师睡觉的问题,但这里有 M 个理发师而不是 1 个理发师。现在,如果理发师以平均 Mc 和标准偏差 SDc 到达。理发师以平均 Mh 和标准偏差 SDh 为客户服务。

我如何接受这个问题的输入?假设它遵循正态分布,并采用 M(barbers)、N(customers)、Mc、SDc、Mh、SDh 的输入。如何在 Java 中解决这个问题?

我应该生成随机间隔吗?

【问题讨论】:

  • 查看维基百科:6 Computational methods
  • 我在回答中添加了一些示例和问题/建议。
  • 在这种情况下,到达通常由泊松过程(指数分布的到达间隔时间)紧密建模,不知道服务时间的合理分布是什么样的。无论您选择什么分布,都必须有 Java 类(用于模拟?),它们提供具有指定分布的随机数。 不要自己动手,要做好并不容易。

标签: java math statistics normal-distribution


【解决方案1】:

您可以使用nextGaussian() method in the Random class。 nextGaussian() 函数将从均值为 0 且标准偏差为 1 的正态分布中抽取样本,因此,例如,如果您想要 1 小时的均值和 15 分钟的标准偏差,则需要将其称为 nextGaussian ()*15+60。

来自文档:

nextGaussian() 返回下一个伪随机,高斯(“正常”) 均值为 0.0,标准差为 1.0 的分布式双精度值 这个随机数生成器的序列。

看这个例子:

import java.util.*;

public class RandomDemo {
   public static void main( String args[] ) {

      // create random object
      Random randomno = new Random();

      // check next Gaussian value 
      for (int i =0; i<10;i++){
      System.out.println("Next Gaussian value: " + randomno.nextGaussian());
      }
   }      
}

编译运行上面的程序,会产生如下结果。

$javac RandomDemo.java
Next Gaussian value: -0.7751137555238873
Next Gaussian value: -0.7533576941233361
Next Gaussian value: 0.20737101421286988
Next Gaussian value: 1.2519939959392383
Next Gaussian value: -0.43613074051716394
Next Gaussian value: -0.7432668748818407
Next Gaussian value: 0.6821771863764128
Next Gaussian value: -1.7738232532706042
Next Gaussian value: -0.5974045649946896
Next Gaussian value: 0.5841939243690774

我的问题是:您确定需要正态分布吗?通常你会期望到达间隔时间有一个exponential distribution

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    相关资源
    最近更新 更多