我有一组超过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;
}
答案 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));
}
}