2013-03-06 47 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