重複の可能性:
指定された長さのJava乱数
私はJavaで15桁の長さの数値を生成しようとしましたが、以下を使用する限り、それを実行できなかったようです。
これにより、最大10桁が生成されます。
Random random = new Random();
int rand15Digt = random.nextInt(15);
どうすれば正常に生成できますか?
重複の可能性:
指定された長さのJava乱数
私はJavaで15桁の長さの数値を生成しようとしましたが、以下を使用する限り、それを実行できなかったようです。
これにより、最大10桁が生成されます。
Random random = new Random();
int rand15Digt = random.nextInt(15);
どうすれば正常に生成できますか?
ランダムの方法 を使用するpublic long nextLong()
まず、との間int
の数値を保持できます。-2,147,483,648
2,147,483,647
文字列として表示される場合、任意の数値を10進数の15桁にフォーマットできます。これは、数値が文字列に変換されるときに実現されます。例:
System.out.println(String.format("%015d", 1));
// prints: 000000000000001
100,000,000,000,000
との間にある乱数を生成する場合は、次のようなトリックを実行999,999,999,999,999
できます。
Random random = new Random();
long n = (long) (100000000000000L + random.nextFloat() * 900000000000000L);
最終的な目標がランダムな10進数を含む15文字の文字列であり、サードパーティのライブラリに満足している場合は、Apachecommonsを検討してくださいRandomStringUtils
。
boolean useLetters = false;
boolean useNumbers = true;
int stringLength = 15;
String result = RandomStringUtils.random(stringLength, useLetters, useNumbers)
試してみてはどうでしょうかBigInteger
。詳細については、このStackOverflowリンクを参照してください。ランダムBigInteger生成
HibernateにUUIDGenerator
これを使用するクラスがあり、セキュアランダムと一意の番号を作成することもできます。
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
String uuid = (String)super.generate(session, object);
return uuid.substring(uuid.length()-15, uuid.length());
}
これは、一意の乱数を生成するための最良の方法だと思います...