今日私はこの問題に遭遇し、私が考えていないエレガントな解決策があると確信しています。
指定した桁数でJavaでランダムな整数(またはlong)を生成するとします。この桁数は変更できます。
つまり、メソッドに桁数を渡し、指定された桁数の乱数を返します
例)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);
}
これより優れた/より効率的なソリューションはありますか?
*指定された範囲の乱数を生成するためのソリューションはたくさんありますが、設定された桁数を指定して乱数を生成する最善の方法と、任意の桁数を処理するのに十分な堅牢性のあるソリューションを作成することに興味がありました。
私は最小値と最大値を渡す必要はありませんでしたが、必要な桁数だけを渡しました
private long generateRandomNumber(int n) {
long min = (long) Math.pow(10, n - 1);
return ThreadLocalRandom.current().nextLong(min, min * 10);
}
nextLong
下限値と上限値の間の乱数を生成する(1_000, 10_000)
ため、たとえばパラメーターを付けて呼び出すと、結果として1000から9999の数値が返されますRandom
。しかし、とにかくそれを使い続ける理由は基本的にありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加