我想用Java生成一個隨機的浮點值。該值必須在可能值的特定範圍內。生成包含在指定值區間中的隨機浮點值的最佳方法是什麼?
例如,我必須生成一個隨機值,該值是在下述範圍內:
MIN: 41,815080
MAX: 41,829191
這些值正好代表一定範圍的地圖上可能經度,但問題適用更普遍。
什麼是一個聰明的方法來做到這一點?
我想用Java生成一個隨機的浮點值。該值必須在可能值的特定範圍內。生成包含在指定值區間中的隨機浮點值的最佳方法是什麼?
例如,我必須生成一個隨機值,該值是在下述範圍內:
MIN: 41,815080
MAX: 41,829191
這些值正好代表一定範圍的地圖上可能經度,但問題適用更普遍。
什麼是一個聰明的方法來做到這一點?
對於一個範圍內的隨機值,計算公式爲:
double random = min + Math.random() * (max - min);
這個基本公式是恆定的,不管你用什麼來產生隨機數。
Math.random()
提供適度均勻分佈的數字,但是你可以用任何你想要的隨機數生成器替換它,例如(略好):
Random r = new Random();
double random = min + r.nextDouble() * (max - min);
,或者如果你真的想要一個float
:
float random = min + r.nextFloat() * (max - min);
或者你可以更異國情調的第三方圖書館。
如果你想生成隨機浮點值試試這個:
import java.util.Random;
public static float randFloat(float min, float max) {
Random rand = new Random();
float result = rand.nextFloat() * (max - min) + min;
return result;
}
希望這有助於。
你想要線性或正態分佈嗎? – Bohemian