我不是很熟悉如何改變Math.random或新的Random()的範圍來生成這樣的雙精度值。我需要能夠在-10到25美分之間產生雙倍的收益(我的計劃涉及金錢,所以我說美分)。另一個單獨的實例會產生90至75美分的隨機雙倍數。我在查找我的答案時看到了這一點:Java:在負雙倍和正雙倍的範圍內生成隨機雙數
double result = Math.random()*(upper - lower)+ lower;
但是,當我將這個想法實現到我的代碼中時,範圍在使用正數和負數之間的範圍時似乎不起作用... 我測試了它的上限爲0.25和更低 - 0.10,但發現它在我做的測試的一個實例中打印了0.3567587946356543。因此,通過這一點,我的結論是,我明明沒有調整正確的範圍內..
請幫助:(
這是使用計算器,所以請去容易對我我第一次,我會如果有什麼我說詳細說明沒有意義..
這是我使用此代碼現有方法:
public double variation(double price){
//formula: (Math.random() * range) + min; where range = max - min
//80% of the time returns amount between -10 & 25 cents
if(Math.random() > 0.19){
return (Math.random() * 0.35) - 0.10;
}
//20% of the time returns amount between -75 & 90 cents
return (Math.random() * 1.65) - 0.75;
}
我知道的方法接受的是雙重價格,它不使用,它是老師的要求,部分採取雙重價格,但忽視其價值。所以請忽略。
你在'upper'和'lower'中有什麼值 - 當它打印出'0.35 ...'時,將這些行作爲代碼片段 – muescha
,然後它來自範圍從-75到20的20%部分 – muescha
你想要2位數的輸出(比如0.17)或者更長的輸出(比如0.11432810481633897) – CodingNinja