今天我遇到了這個問題,我確信有一個優雅的解決方案,我沒有想到。生成一個具有指定位數的隨機整數Java
比方說,我想用一個指定的位數生成一個Java中的隨機整數(或長整數),這個位數可以改變。
I.e.將一些數字傳入一個方法,並返回一個具有指定位數的隨機數。例如,N = 3,產生一個介於100-999之間的隨機數; N = 4,產生1000-9999
private long generateRandomNumber(int n){
/*Generate a random number with n number of digits*/
}
我嘗試到目前爲止之間的隨機數(這個作品,但似乎凌亂)
private long generateRandomNumber(int n){
String randomNumString = "";
Random r = new Random();
//Generate the first digit from 1-9
randomNumString += (r.nextInt(9) + 1);
//Generate the remaining digits between 0-9
for(int x = 1; x < n; x++){
randomNumString += r.nextInt(9);
}
//Parse and return
return Long.parseLong(randomNumString);
}
是否有比這更好/更高效的解決方案?
*在指定範圍內生成隨機數有很多解決方案,我更加好奇在給定一定數量的數字的情況下生成隨機數的最佳方法,以及使解決方案足夠健壯以處理任意數量數字。
我不希望有一個最大和最小傳遞,而只是位數需要
我喜歡你的方法,因爲它沒有受到LONG長度的約束,除了你長時間施展它。 – Elye
@aetheria更新,以顯示它爲什麼不是重複 –
@aetheria你能解釋爲什麼這是一個重複?這是一個完全不同的問題,比你引用 –