0

我正在用 java 编程,我遇到了一个可以使用帮助的问题。基本上我需要用户输入他们期望某个事件在一定时间内发生多少次。该事件也需要一定的时间才能完成。综上所述,我需要使用随机数生成器来根据预期值决定事件是否应该发生。

这是一个例子。假设该事件需要 2 秒才能完成。用户说他们想要总共 100 秒,他们希望事件发生 25 次。现在这就是我所拥有的。Units 是时间单位,expectedLanding 是他们希望事件发生的次数。

double isLandingProb = units/expectedLanding;
double isLanding = isLandingProb * random.nextDouble();
if(isLanding >= isLandingProb/2){
//do event here
}

这个解决方案不起作用,我想不出可行的方法。

4

2 回答 2

0

尝试这个:

double isLandingProb = someProbability;
double isLanding = random.nextDouble();

if(isLanding <= isLandingProb){
    //do event here
}

例如,如果您的概率是 0.25(4 分之 1),并且 nextDouble 返回一个介于 0 和 1 之间的随机数,那么您的 nextDouble 需要小于(或等于)0.25 才能实现着陆。

于 2013-03-06T18:30:43.300 回答
0

给定一个需要x几秒钟才能运行的事件,但您希望它平均每秒运行一次y,那么它需要以概率执行x/y。那么事件在几秒内运行的秒数的期望yx= 一个事件。

int totalSeconds;
int totalTimes;
double eventTime;

double secondsPerEvent = 1.0d * totalSeconds / totalTimes;
if( eventTime > secondsPerEvent ) throw new Exception("Impossible to satisfy");

double eventProbability = eventTime / secondsPerEvent;

if( eventProbability < random.nextDouble() )
    //  do event
于 2013-03-06T18:36:37.270 回答