我真的認爲這會起作用,但是當我運行它時,我總是會得到一些隨機的巨大小數,這是毫無意義的。邏輯是對的,那爲什麼代碼不工作?我如何獲得指定範圍內的隨機double?
do{
value = rnd.nextDouble();
}while(value>min && value<max);
牢記「最小」和「最大」實際上是做一些簡單的算術運算,然後返回一個值的函數,但我只是把最大值和最小值爲簡單起見,所以我沒有張貼整個類。
我真的認爲這會起作用,但是當我運行它時,我總是會得到一些隨機的巨大小數,這是毫無意義的。邏輯是對的,那爲什麼代碼不工作?我如何獲得指定範圍內的隨機double?
do{
value = rnd.nextDouble();
}while(value>min && value<max);
牢記「最小」和「最大」實際上是做一些簡單的算術運算,然後返回一個值的函數,但我只是把最大值和最小值爲簡單起見,所以我沒有張貼整個類。
可以聲明一個start
和end
變量(int
或double
),並使用nextDouble()
,如:
value = rnd.nextDouble() * (end - start) + start;
記住:
公共雙nextDouble() 返回下一個僞隨機數,從這個隨機數發生器的序列中均勻分佈在0.0和1.0之間的雙值。
的nextDouble
method返回0.0
以下,並且1.0
獨家之間的隨機double
值。您可以通過添加min
值來翻譯範圍,並將範圍向上乘以max
和min
之間的差值。
value = (rnd.nextDouble() * (max - min)) + min;
要生成rangeMin
和rangeMax
之間的隨機值:
Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();