サンプルダウンロード


解説

Javaには乱数生成の方法が大雑把に2つあります。
  1. double Math.randomを使う方法
  2. int Random.nextIntを使う方法
この2つの方法の性能をチェックしてみました。

実行結果

1.double Math.randomを使う方法
  処理時間(ミリ秒)520, 最後の値 3
2.int Random.nextIntを使う方法
  処理時間(ミリ秒)270, 最後の値 4
 

当然といいましょうか、doubleに掛け算して値を求めるよりは
intで望む値を取得する方が性能はよろしいようです。
簡単なゲームの乱数程度ならRandom.nextIntがよいと思いました。

サンプルソース

import java.util.Date;
import java.util.Random;
 
// Javaの乱数の性能確認
// Javaの乱数生成では主に2つの方法があります
// 1.double Math.randomを使う方法
// 2.int Random.nextIntを使う方法
// この2つの方法の性能をチェックしてみましょう
public class RandomSample {
 
	public static void main(String[] args) {
		int r = 0;
		long s, e;
 
		// 1.double Math.randomを使う方法
		s = new Date().getTime();
		Math.rint(s); // 乱数初期化
		s = new Date().getTime();
		for (int i = 0; i < 10000000; i++) {
			// 0から1以下のdouble値に6をかけ、int値に変換すると0-5の値がランダムに取得できます
			r = (int) (Math.random() * 6);
		}
		e = new Date().getTime();
		System.out.println("1.double Math.randomを使う方法");
		System.out.println("  処理時間(ミリ秒)" + (e - s) + ", 最後の値 " + r);
 
		// 2.int Random.nextIntを使う方法
		Random random = new Random();
		random.setSeed(s);
		s = new Date().getTime();
		for (int i = 0; i < 10000000; i++) {
			// 引数に6を設定すると、0-6の値がランダムに取得できます
			r = random.nextInt(6);
		}
		e = new Date().getTime();
		System.out.println("2.int Random.nextIntを使う方法");
		System.out.println("  処理時間(ミリ秒)" + (e - s) + ", 最後の値 " + r);
 
	}
 
}
 

タグ:

Java 乱数 性能
最終更新:2012年11月03日 15:25
添付ファイル