この簡単なチュートリアルでは、普通のJavaとApache Commons Mathライブラリを使ってロングファーストを生成する方法を説明します。

この記事はリンクの一部です:/java-tutorial[The Java – Back to Basic]シリーズ、ここBaeldung。


1無制限のLong

を生成する

Longを生成することから始めましょう:

@Test
public void givenUsingPlainJava__whenGeneratingRandomLongUnbounded__thenCorrect() {
    long generatedLong = new Random().nextLong();
}


2範囲内でLongを生成する


2.1. 普通のJavaを使ったRandom Long

次に、ランダムに制限されたLong、つまり指定された範囲または間隔内のLong値の作成を見てみましょう。

@Test
public void givenUsingPlainJava__whenGeneratingRandomLongBounded__thenCorrect() {
    long leftLimit = 1L;
    long rightLimit = 10L;
    long generatedLong = leftLimit + (long) (Math.random() **  (rightLimit - leftLimit));
}


2.2. Apache Commons Math

によるランダムロング

クリーンなAPIとCommons Mathを使ってランダムLongを生成する方法を見てみましょう。

@Test
public void givenUsingApacheCommons__whenGeneratingRandomLongBounded__thenCorrect() {
    long leftLimit = 10L;
    long rightLimit = 100L;
    long generatedLong = new RandomDataGenerator().nextLong(leftLimit, rightLimit);
}


3無制限整数

を生成する

境界のないランダムな整数を生成することに移りましょう。

@Test
public void givenUsingPlainJava__whenGeneratingRandomIntegerUnbounded__thenCorrect() {
    int generatedInteger = new Random().nextInt();
}

お分かりのように、それは長い時間を生み出すことにかなり近いです。


4範囲内で整数を生成する


4.1. 普通のJava

を使ったランダムな整数

Next – 与えられた範囲内のランダムな整数

@Test
public void givenUsingPlainJava__whenGeneratingRandomIntegerBounded__thenCorrect() {
    int leftLimit = 1;
    int rightLimit = 10;
    int generatedInteger = leftLimit + (int) (new Random().nextFloat() **  (rightLimit - leftLimit));
}


4.2. Commons Math

によるランダム整数

そしてCommon Mathでも同じです。

@Test
public void givenUsingApache__whenGeneratingRandomIntegerBounded__thenCorrect() {
    int leftLimit = 1;
    int rightLimit = 10;
    int generatedInteger = new RandomDataGenerator().nextInt(leftLimit, rightLimit);
}


5無制限フロートを生成する

それでは、ランダムなフロートを生成することにしましょう。

@Test
public void givenUsingPlainJava__whenGeneratingRandomFloatUnbouned__thenCorrect() {
    float generatedFloat = new Random().nextFloat();
}


6. 範囲内でフロートを生成する


6.1. プレーンJava

によるランダムフロート

そして有界なランダムフロート:

@Test
public void givenUsingPlainJava__whenGeneratingRandomFloatBouned__thenCorrect() {
    float leftLimit = 1F;
    float rightLimit = 10F;
    float generatedFloat = leftLimit + new Random().nextFloat() **  (rightLimit - leftLimit);
}


6.2. Commons Math

によるランダムフロート

今 – コモンズ数学との境界のあるランダムフロート

@Test
public void givenUsingApache__whenGeneratingRandomFloatBounded__thenCorrect() {
    float leftLimit = 1F;
    float rightLimit = 10F;
    float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat();
    float generatedFloat = leftLimit + randomFloat **  (rightLimit - leftLimit);
}


7. 無制限Double

を生成する


7.1. プレーンJava

を使用したRandom Unbounded Double

最後に、ランダムなdouble値を生成します。まず、Java Math APIを使用します。

@Test
public void givenUsingPlainJava__whenGeneratingRandomDoubleUnbounded__thenCorrect() {
    double generatedDouble = Math.random();
}


7.2. Commons Math

を使ったランダムなアンバウンドダブル

Apache Commons Mathライブラリを使ったランダムなdouble値

@Test
public void givenUsingApache__whenGeneratingRandomDoubleUnbounded__thenCorrect() {
    double generatedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble();
}


8範囲内でダブルを生成する


8.1. プレーンJava

によるランダム境界ダブル

この例では、ある期間内に生成されたランダムなdoubleを見てみましょう – Javaを使って:

@Test
public void givenUsingPlainJava__whenGeneratingRandomDoubleBounded__thenCorrect() {
    double leftLimit = 1D;
    double rightLimit = 10D;
    double generatedDouble = leftLimit + new Random().nextDouble() **  (rightLimit - leftLimit);
}


8.2. Commons Math

によるランダムな二重境界

そして最後に – Apache Commons Mathライブラリを使った、ある区間内のランダムなdouble –

@Test
public void givenUsingApache__whenGeneratingRandomDoubleBounded__thenCorrect() {
    double leftLimit = 1D;
    double rightLimit = 100D;
    double generatedDouble = new RandomDataGenerator().nextUniform(leftLimit, rightLimit);
}

そしてそこにそれがあります – Javaで最も一般的な数値プリミティブのために無制限と有界値の両方を生成する方法の素早いそして要点例。

9.まとめ

このチュートリアルでは、さまざまな手法やライブラリを使用して、バインドされたまたはバインドされていない乱数を生成する方法を説明しました。

いつものように、これらすべての例とスニペットの実装はhttps://github.com/eugenp/tutorials/tree/master/java-numbers[GitHubプロジェクト]にあります。これはMavenベースのプロジェクトなので、インポートして実行するのは簡単なはずです。