今回は乱数生成のテクニックについて説明したいと思います。
前回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つの乱数を足せば二桁の乱数の完成です。
今回は乱数生成のテクニックについて紹介しました!