我有一组超过 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;
}
我有一组超过 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;
}
该类Random
允许您创建一组一致的随机数,以便每次运行程序时都会生成相同的值序列。您还可以使用 Random 类生成正态分布的随机值。我怀疑你需要这些。
对于您所描述的,我只会使用 Math.random。所以,考虑到一个人的年龄,我们可以这样写:
double prob = manDeathTable[age];
if( Math.random() < prob )
virtualManDiesThisYear();
首先,您需要Random
在程序中的某个合理位置创建一个实例——例如当您的程序启动时。
Random random = new Random();
使用此代码查看事件是否发生:
boolean happens = random.NextDouble() < prob;
我不确定这个范围是从哪里来的。如果您有一个分布,我建议您使用 Random 来生成一个值并继续使用它。
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));
}
}