Random 基于期望值生成随机数

Random 基于期望值生成随机数,random,numbers,Random,Numbers,我正在用java编程,遇到了一个需要帮助的问题。基本上,我需要用户输入他们期望某个事件在一定时间内发生多少次。该活动也需要一定的时间才能完成。说到这里,我需要使用一个随机数生成器根据预期值来决定事件是否应该发生 这里有一个例子。假设事件需要2秒钟才能完成。用户表示他们总共需要100秒,他们预计事件会发生25次。现在这就是我所拥有的。Units是时间单位,expectedLanding是他们希望事件发生的次数 double isLandingProb = units/expectedLanding

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

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

double isLandingProb = units/expectedLanding;
double isLanding = isLandingProb * random.nextDouble();
if(isLanding >= isLandingProb/2){
//do event here
}
此解决方案不起作用,我很难想出可行的方法。

试试以下方法:

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

if(isLanding <= isLandingProb){
    //do event here
}
double isLandingProb=someProbability;
双孤岛=random.nextDouble();

如果(孤岛化给定一个运行时间为
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
inttotalseconds;
整数倍;
双事件时间;
double SecondsPrevent=1.0d*totalSeconds/totalTimes;
如果(eventTime>SecondsPrevent)抛出新异常(“无法满足”);
双事件概率=事件时间/秒预防;
if(eventProbability
Define“is not working”。这非常有效,感谢您的快速回复。我走对了路,但需要一些帮助,非常感谢!!