すずろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

スポンサーリンク

Java 範囲指定付き乱数配列作成プログラムを作ってみた

number

今日はちょっとしたJavaのプログラミングをしてみまして…。 範囲指定した乱数配列を作るプログラムを作成してみました。

乱数というのは、ランダムな数字の事を言います。 例えば、配列の数字の順番を並び替える(ソート)のプログラムを作成するときに乱数は重宝します。 サンプルとなる配列の値を自分で設定することもできますが、乱数を使って自動で配列を作ってくれたほうが簡単で便利です。 配列の要素数が10程度なら手動でも良いかもしれませんが、100個、1000個…なんてことになったらもうプログラムで書くしかないですよね。

今回の記事では、乱数の範囲指定ができる乱数配列の作成を行う「RandomArrayGenerator」クラスと、そのRandomArrayGeneratorを使ったサンプルプログラム「RandomArrayGeneratorTest」クラスを作成してみます。 RandomArrayGeneratorを使えば、乱数配列が簡単に作成できるようになりますよ。

RandomArrayGeneratorクラス

RandomArrayGeneratorクラスのソースコードは以下のとおりです。 packageは私の場合ですので気にしないでください。

RandomArrayGeneratorには、配列の要素数(n)・乱数の最小値(min)・乱数の最大値(max)を指定して、乱数配列を作るメソッドgenerate()を持っています。 最初にn個の要素を持った配列を作成して、forループでそれぞれの要素に乱数を代入していきます。 Math.random()メソッドは0.0以上1.0未満の数を返すことを考慮して、Math.floor(Math.random() * (max - min + 1) + min)という式で乱数を作成します。 これでmin以上max以下の乱数を取得できます。 この値は整数では無いのでint型にキャストしています。

[java] package jp.suzushin7;

public class RandomArrayGenerator { public int generate(int n, int min, int max) { int array = new int[n]; for(int i = 0; i < n; i++) { array[i] = (int)(Math.floor(Math.random() * (max - min + 1) + min)); } return array; } } [/java]

RandomArrayGeneratorTestクラス

RandomArrayGeneratorTestでは、簡単なサンプルとしてRandomArrayGeneratorを使って実際に乱数配列を作成し、その配列の中身を表示するということを行っています。 ソースコードは以下のとおりです。

RandomArrayGeneratorの使い方としては、まずRandomArrayGeneratorのインスタンスを生成します。

[java] RandomArrayGenerator rag = new RandomArrayGenerator(); [/java]

そして、generate()メソッドで要素数・最小値・最大値を指定して、乱数配列を作成させるだけです。 ねっ、簡単でしょ?

[java] int n1 = rag.generate(10, 0, 100); int n2 = rag.generate(10, -50, 50); [/java]

例として、n1には要素数10、最小値0、最大値100として乱数配列を作っています。 n2では要素数10、最小値-50、最大値50として乱数配列を作らせています。

配列の中身の表示には、新しくprintArray()というメソッドを作ってみました。 forループとSystem.out.printf()メソッドを使って、配列の各要素を表示させています。 最後にSystem.out.println()メソッドで改行を入れています。

[java] package jp.suzushin7;

public class RandomArrayGeneratorTest { public static void main(String[] args) { RandomArrayGenerator rag = new RandomArrayGenerator();

    int[] n1 = rag.generate(10, 0, 100);
    printArray(n1);

    int[] n2 = rag.generate(10, -50, 50);
    printArray(n2);
}

private static void printArray(int[] n) {
    System.out.printf(&quot;%d&quot;, n[0]);
    for(int i = 1; i &lt; n.length; i++) {
        System.out.printf(&quot;,%d&quot;, n[i]);
    }
    System.out.println();
}

} [/java]

実行例

試しにRandomArrayGeneratorTestを実行させてみた結果を載せておきます。 やってみると分かると思いますが、実行する度に結果が変わります。 まぁ乱数を使っていますので当然ですが…。 正しく指定した範囲で乱数の配列が作成されていることが分かると思います。

[text] 68,41,3,98,42,9,93,96,45,29 -22,-27,4,12,-11,-14,19,-49,-11,50 [/text]

まとめ

今回の記事では、乱数の範囲指定が可能な乱数配列を作成するRandomArrayGeneratorクラスと、そのサンプルプログラムRandomArrayGeneratorTestクラスを作成してみました。 RandomArrayGeneratorクラスを使えば、今後「この値の範囲で乱数配列が欲しい!」という時に簡単に乱数配列を取得することができます。

乱数配列が欲しくなった時に、いちいちそのためのプログラムを書くのは非効率です。 一度このクラスを作っておけば、後は必要な時に再利用できますよね。 乱数配列を使いたいという時はちょくちょくあると思いますので、ぜひこのRandomArrayGeneratorクラスを作っておくと良いのではないでしょうか?