「Java/サンプル/乱数生成の性能」の編集履歴(バックアップ)一覧はこちら
「Java/サンプル/乱数生成の性能」(2012/11/03 (土) 15:25:41) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
* 実行結果
#highlight(){{
1.double Math.randomを使う方法
処理時間(ミリ秒)520, 最後の値 3
2.int Random.nextIntを使う方法
処理時間(ミリ秒)270, 最後の値 4
}}
* サンプルダウンロード
&ref(RandomSample2.java)
* 解説
Javaには乱数生成の方法が大雑把に2つあります。
+ double Math.randomを使う方法
+ int Random.nextIntを使う方法
この2つの方法の性能をチェックしてみましょう。
* サンプルソース
#highlight(java){{
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);
}
}
}}
* サンプルダウンロード
&ref(RandomSample2.java)
* 解説
Javaには乱数生成の方法が大雑把に2つあります。
+ double Math.randomを使う方法
+ int Random.nextIntを使う方法
この2つの方法の性能をチェックしてみました。
* 実行結果
#highlight(){{
1.double Math.randomを使う方法
処理時間(ミリ秒)520, 最後の値 3
2.int Random.nextIntを使う方法
処理時間(ミリ秒)270, 最後の値 4
}}
当然といいましょうか、doubleに掛け算して値を求めるよりは
intで望む値を取得する方が性能はよろしいようです。
簡単なゲームの乱数程度ならRandom.nextIntがよいと思いました。
* サンプルソース
#highlight(java){{
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);
}
}
}}