Java ランダムな数値を取得するサンプル(乱数)

Javaのランダムな数値(乱数)を取得するサンプルです。

目次

Randomクラスの nextIntメソッド

public  int  nextInt ( int bound )
  • Randomクラスの nextIntメソッドです。
  • 引数を指定した場合、出力する値の範囲が限定されます。
    →nextInt(10)とした場合、0から9の間のどれかの値が戻ります。
  • 範囲の最初の値を指定する場合数値を足します。
    →1~10としたい場合は、nextInt(10)+1にします。
  • 生成される値は偏りがあるといわれています。
  • 以下はJava8 API仕様のRandomクラスの nextIntメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#nextInt-int-

コード

Randomクラスの nextIntメソッドのサンプルです。

7行目は、Randomクラスをインスタンス化しています。
10行目は、メソッドの引数はなしです。
14行目は、nextInt(10)で0~9のいずれかを取得しています。
18行目は、nextInt(9)で0~8のいずれかを取得し、1を足して1~9としています。
22行目は、nextInt(7)で0~6のいずれかを取得し、2を足して2~8としています。

package test1;
import java.util.Random;

public class Test1 {
	public static void main(String[] args) {
				
	        Random r1 = new Random();
	        
	        // 引数なし
	        int a = r1.nextInt();
	        System.out.println(a); //844725120
	        
	        // 0〜9の数値
	        int b = r1.nextInt(10);
	        System.out.println(b); //5
	        
	        // 1~9の数値
	        int c = r1.nextInt(9) + 1;
	        System.out.println(c); //9
	        	        
	        // 2〜8の数値
	        int d = r1.nextInt(7) + 2;
	        System.out.println(d); //7
 	}
}

Mathクラスのrandomメソッド

public  static  double  random()
  • 0~1未満のランダムなdouble型の数値を返します。
  • ある数値の範囲の中のどれか1つの数値を求める場合は、以下の式を使います
    (int)(Math.random() *  a  + b)
    aは、出力する値の範囲を限定します。
    →Math.random()*10とした場合、0から9の間のどれかの値
    bは、範囲の最初の値をセットします。
    →Math.random()*10 + 1とした場合、1から10の間のどれかの値
  • 生成される値は偏りがあるといわれています。
  • 以下はJava8 API仕様のMathクラスのrandomメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#random--

コード

randomメソッドのサンプルです。

7行目は、Math.random()*10で、0~9を取得します。
11行目は、Math.random()*9で、0~8を取得し、1を足して1~9としています。
15行目は、Math.random()*8で、0~7を取得し、1を足して1~8としています。
19行目は、Math.random()*7で、0~6を取得し、2を足して2~8としています。

package test1;

public class Test1 {
	public static void main(String[] args) {

		 // 引数なし
		double a = Math.random();		
		System.out.println(a); //0.18921156156291252
		
		// 0〜9の乱数
		int b = (int)(Math.random()*10);		
		System.out.println(b); //4
	        
	        // 1~9の乱数
		int c = (int)(Math.random()*9+1);
		System.out.println(c); //2
	        
	        // 2〜8の乱数
		int d = (int)(Math.random()*7+2);
		System.out.println(d); //2

 	}
}

SecureRandomクラスを使用する

コード

randomメソッドのサンプルです。

9行目は、SecureRandomクラスをインスタンス化しています。
11行目は、nextIntメソッドで乱数を返しています。

package test1;
import java.security.SecureRandom;
import java.util.Random;

public class Test1 {
	public static void main(String[] args) {

		// SecureRandomクラス
		Random a = new SecureRandom();
		
		int b = a.nextInt();	
		System.out.println(b); //1857601034
 	}
}

関連の記事

Java べき乗を計算するサンプル(pow)
Java 小数第一位で切り上げるサンプル(ceil)
Java 小数第一位で切り捨てるサンプル(floor)
Java 小数第一位で四捨五入するサンプル(round)

△上に戻る