2014-03-01 91 views
-1

我真的認爲這會起作用,但是當我運行它時,我總是會得到一些隨機的巨大小數,這是毫無意義的。邏輯是對的,那爲什麼代碼不工作?我如何獲得指定範圍內的隨機double?

do{ 
    value = rnd.nextDouble(); 
}while(value>min && value<max); 

牢記「最小」和「最大」實際上是做一些簡單的算術運算,然後返回一個值的函數,但我只是把最大值和最小值爲簡單起見,所以我沒有張貼整個類。

回答

0

可以聲明一個startend變量(intdouble),並使用nextDouble(),如:

value = rnd.nextDouble() * (end - start) + start; 

記住:

公共雙nextDouble() 返回下一個僞隨機數,從這個隨機數發生器的序列中均勻分佈在0.0和1.0之間的雙值。

0

nextDouble method返回0.0以下,並且1.0獨家之間的隨機double值。您可以通過添加min值來翻譯範圍,並將範圍向上乘以maxmin之間的差值。

value = (rnd.nextDouble() * (max - min)) + min; 
0

要生成rangeMinrangeMax之間的隨機值:

Random r = new Random(); 
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble(); 
相關問題