Java:我如何模拟概率?

时间:2012-04-28 22:43:21

标签: java probability

我有一组超过100种不同的概率,从0.007379一直到0.913855(这些概率是从精算师表http://www.ssa.gov/oact/STATS/table4c6.html收集的)。在Java中,我如何使用这些概率来确定是否会发生某些事情?这些方面的东西......

public boolean prob(double probability){
  if (you get lucky)
    return true;
  return false;
}

3 个答案:

答案 0 :(得分:10)

Random类允许您创建一组一致的随机数,以便每次运行程序时,都会生成相同的值序列。您还可以使用Random类生成正态分布的随机值。我怀疑你是否需要这些。

对于你描述的内容,我只使用Math.random。所以,考虑到一个男人的年龄,我们可以写出类似的东西:

double prob = manDeathTable[age];
if( Math.random() < prob )
   virtualManDiesThisYear();

答案 1 :(得分:6)

首先,您需要在程序中的某个地方创建一个Random的实例 - 例如,当您的程序启动时。

Random random = new Random();

使用此代码查看事件是否发生:

boolean happens = random.NextDouble() < prob;

答案 2 :(得分:0)

我不确定那个范围来自哪里。如果你有一个分布,我建议使用随机生成一个值并继续使用它。

public ProbabilityGenerator {
    private double [] yourValuesHere = {  0.007379, 0.5,  0.913855 };
    private Random random = new Random(System.currentTimeMillis());

    public synchronized double getProbability() {
        return this.yourValuesHere[this.random.nextInt(yourValuesHere.length));
    }
}