1

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

3 回答 3

10

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

对于您所描述的,我只会使用 Math.random。所以,考虑到一个人的年龄,我们可以这样写:

double prob = manDeathTable[age];
if( Math.random() < prob )
   virtualManDiesThisYear();
于 2012-04-28T23:14:31.557 回答
6

首先,您需要Random在程序中的某个合理位置创建一个实例——例如当您的程序启动时。

Random random = new Random();

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

boolean happens = random.NextDouble() < prob;
于 2012-04-28T22:46:52.027 回答
0

我不确定这个范围是从哪里来的。如果您有一个分布,我建议您使用 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));
    }
}
于 2012-04-28T22:44:10.053 回答