根据预期值生成随机数

时间:2013-03-06 18:26:56

标签: random numbers

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

这是一个例子。假设事件需要2秒钟才能完成。用户说他们总共需要100秒,他们希望事件发生25次。现在这就是我的意思。单位是时间单位和期望单位是他们希望事件发生的次数。

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

这个解决方案无法正常工作,而且我无法考虑可行的方法。

2 个答案:

答案 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