続・とってもわかりやすいJAVA 【第19回 乱数生成のテクニック】

この記事は2015年9月29日に書かれたものです。内容が古い可能性がありますのでご注意ください。


今回は乱数生成のテクニックについて説明したいと思います。

前回nextInt()メソッドの引数で生成する乱数の個数を決められる、という話をしました。
では、二桁の乱数を生成したい場合にはどうすればよいでしょう?
nextInt()メソッドの引数で個数を決めても、生成される数は0からになってしまいます。
そこで二桁の乱数を生成する方法を3種類紹介していきます。

1.二桁になるまで生成を繰り返す

nextInt()メソッドの引数に100と指定すれば0~99の乱数が生成されます。
しかし0~9では一桁なので、二桁になるまで繰り返し生成を行います。
ではサンプルで確認してみましょう。

■サンプルプログラム

import java.util.Random;

class RandSample_01 {
    public static void main(String[] args) {
        Random rand = new Random();
        int r;
        do {
            r = rand.nextInt(100);
        } while(r < 10);
        System.out.println(r);
    }
}

 

■解説
6行目
乱数を代入する変数をあらかじめ宣言
7~9行目
doブロックの中で0~99の乱数を生成。
繰り返す条件は乱数10未満、つまり一桁の場合。
これで二桁の乱数が生成できます。

2.0~89の乱数を生成し+10(オススメ)

二桁の数は10~99までの計90通りあります。
そこで0~89の乱数を生成し、それに10プラスすれば二桁の乱数になります。

■サンプルプログラム

import java.util.Random;

class RandSample_02 {
    public static void main(String[] args) {
        Random rand = new Random();
        int r = rand.nextInt(90) + 10;
        System.out.println(r);
    }
}

 

■解説
1に比べかなりわかりやすいと思います。
1は場合によってはwhile文が何回も繰り返すことになってしまいますが、今紹介した方法だと繰り返し処理は必要ありません。
したがって、特別な理由がない限りはこの方法をオススメします。
ちなみに三桁だと「rand.nextInt(900) + 100」になります。

3.位ごとに乱数を生成

もし、位ごとに数を扱いたい場合であればこの方法をオススメします。

■サンプルプログラム

import java.util.Random;

class RandSample {
    public static void main(String[] args) {
        Random rand = new Random();
        int x = rand.nextInt(9) + 1;
        int y = rand.nextInt(10);
        int r = (x * 10) + y;
        System.out.println(r);
    }
}

 

■解説
6行目
十の位の数を生成しています。
1~9までの数になります。
0はないので注意。
7行目
一の位の数を生成しています。
一の位は0~9の数になります。
8行目
最後に2つの乱数を足せば二桁の乱数の完成です。

今回は乱数生成のテクニックについて紹介しました!

  • このエントリーをはてなブックマークに追加

PAGE TOP