「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); } } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: