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

実行に数秒かかるイベントがx、平均して1秒に1回実行されるようにしたい場合はy、確率で実行する必要がありますx/y。その場合、イベントが秒単位で実行されている秒数の期待値yx=1イベントです。

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 に答える
0

これを試して:

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

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

たとえば、確率が.25(4つのうち1つ)で、nextDoubleが0から1までの乱数を返す場合、着陸を達成するには、nextDoubleが.25未満(または等しい)である必要があります。

于 2013-03-06T18:30:43.300 に答える