2016-11-13 62 views
-6

我有:代50%和150%之間的隨機數

private Random rng = new Random(); 

double random = rng.nextDouble(1.5-0.5) + 0.5; 

因爲我想50%和150%之間產生的數。但它會引發一個錯誤。如何使用隨機函數獲得該範圍內的數字?

+2

「它拋出我錯誤「不是有用的描述。請在您的問題中包含異常堆棧跟蹤! – GhostCat

+0

如果你修復了錯誤,它可能會起作用。 – Kayaman

+0

歡迎來到Stack Overflow!請查看我們的[SO問題清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)來幫助你提出一個好問題,從而得到一個很好的答案。 –

回答

1

您的問題是:您應該閱讀javadoc。含義:不要假定某些庫方法做某事;相反:請閱讀文檔以驗證您的假設是正確的。

在這種情況下,檢查了Double.nextDouble ...並找到:

返回下一個僞,從這個隨機數生成器的序列中均勻分佈的0.0和1.0之間的double值。

問題是:有沒有方法nextDouble()需要一個雙參數!只有一個沒有任何爭論;並且該方法默認返回0和1之間的值。

因此,只需更改您的代碼即可在沒有任何參數的情況下調用該方法!

-1

你可以做這樣的事情50%和100%

public static void main(final String[] args) { 
    Random rng = new Random(); 
    double random = rng.nextDouble(); 

    if (random <= 0.5) { 
     System.out.println("50% " + random); 
    } else { 
     System.out.println("100% " + random); 
    } 
} 
1

這是因爲nextDouble不接收參數,只返回在0.0和1.0之間的雙。使用以下命令:

Random rng = new Random(); 

double max = 1.5; 
double min = 0.5; 
double random = rng.nextDouble(); // Double between 0.0 and 1.0 

double percentage = random*(max-min) + min; 
System.out.println(percentage); 
1

如果您在IDE中讀取錯誤或只是看Java文檔,你會看到清晰的原因...

方法nextDouble()的類型隨機是不適用於 參數(雙)

隨機類沒有這樣的方法nextDouble(),需要一個雙作爲參數

BTW你爲什麼不只是產生50和150之間的隨機整數...這將讓你的願望實現更有意義......