我在java编程,我遇到了一个问题,我可以使用一些帮助。基本上我需要用户输入他们期望特定事件在一定次数内发生的次数。该事件也需要一定的时间才能完成。尽管如此,我还是需要使用随机数生成器来决定事件是否应该根据预期值发生。
这是一个例子。假设事件需要2秒钟才能完成。用户说他们总共需要100秒,他们希望事件发生25次。现在这就是我的意思。单位是时间单位和期望单位是他们希望事件发生的次数。
double isLandingProb = units/expectedLanding;
double isLanding = isLandingProb * random.nextDouble();
if(isLanding >= isLandingProb/2){
//do event here
}
这个解决方案无法正常工作,而且我无法考虑可行的方法。
答案 0 :(得分:0)
试试这个:
double isLandingProb = someProbability;
double isLanding = random.nextDouble();
if(isLanding <= isLandingProb){
//do event here
}
例如,如果您的概率是.25(4个中的1个),并且nextDouble返回0到1之间的随机数,那么您的nextDouble需要小于(或等于).25才能实现着陆。
答案 1 :(得分: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