4

重複の可能性:
指定された長さのJava乱数

私はJavaで15桁の長さの数値を生成しようとしましたが、以下を使用する限り、それを実行できなかったようです。

これにより、最大10桁が生成されます。

  Random random = new Random();
  int rand15Digt = random.nextInt(15);

どうすれば正常に生成できますか?

4

5 に答える 5

5

ランダムの方法 を使用するpublic long nextLong()

于 2012-12-14T09:58:18.637 に答える
4

まず、との間intの数値を保持できます。-2,147,483,6482,147,483,647

使用するRandom.nextLong()

于 2012-12-14T09:59:00.177 に答える
3

文字列として表示される場合、任意の数値を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) 
于 2012-12-14T10:05:18.847 に答える
1

試してみてはどうでしょうかBigInteger。詳細については、このStackOverflowリンクを参照してください。ランダムBigInteger生成

于 2012-12-14T10:22:48.447 に答える
0

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());
}

これは、一意の乱数を生成するための最良の方法だと思います...

于 2012-12-14T10:22:30.267 に答える