2013-03-06 48 views
0

我编程在Java和我所遇到的一个问题,我可以使用一些帮助生成随机数。基本上我需要用户输入他们预期某个事件在特定时间内发生的次数。该事件还需要一定的时间才能完成。尽管如此,我需要使用随机数生成器来根据预期值决定事件是否发生。基于预期值

下面是一个例子。说事件需要2秒钟才能完成。用户说他们总共需要100秒,他们希望事件发生25次。现在这就是我所拥有的。单位是时间单位,预计Landing是他们希望事件发生的次数。

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

此解决方案无法正常工作,而且我很难考虑可行的事情。

+0

定义 “不工作”。 – 2013-03-06 18:29:05

回答

0

尝试这种情况:

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

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

例如,如果你的概率为0.25(1出来的4),并返回nextDouble 0和1之间的随机数,那么你nextDouble必须小于(或等于).25以实现着陆。

+0

这很好用,谢谢你的快速回复。我走在正确的道路上,但需要一点帮助,谢谢! – 2013-03-06 19:47:50

0

鉴于一个事件需要运行x秒,但您希望它平均每y秒运行一次,那么它需要以概率x/y执行。然后的秒数的期望事件被运行在y秒是x =一个事件。

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