2015.12.27
乱数(ランダム)
はじめに
乱数は、不規則で予測不能な数のことです。
この値は何らかの計算式により求められているので本当の意味での乱数ではありませんが、数値発生の規則性が少ないで乱数として使用されます。このような方法で作る乱数は擬似乱数と呼ばれています。
Math.randomメソッドの仕様は以下のとおりです。
Math.randomメソッド
public static double Math.random()
・乱数を返します。 パラメータ なし 戻り値 0.0以上、1.0未満の乱数
Random0.java
001 002 003 004 005 006 007 008 009
public class Random0 { public static void main( String[] args ) { // 発生した乱数をrndに格納 double rnd = Math.random(); // 変数rndを出力 System.out.print( rnd ); } }
Math.randomメソッドは、呼び出すごとに戻す値が違います。
5回実行した結果をみてください。0以上1未満の実数値がランダムに出力されることがわかります。
実行結果 1回目
0.33463196523219774
実行結果 2回目
0.925589633182915
実行結果 3回目
0.3676754227663921
実行結果 4回目
0.4094183184624186
実行結果 5回目
0.18181215808166573
乱数を発生するJavaサンプル
ここからは、このメソッドを利用して、指定した範囲の乱数を発生する方法をいくつかの例で説明します。
0.0以上、10.0未満のdouble型の乱数を発生
Math.randomメソッドに10.0を掛けます。
double rnd = Math.random() * 10.0;
Random1.java
001 002 003 004 005 006 007 008 009
public class Random1 { public static void main( String[] args ) { // 0.0以上、10.0未満のdouble型の乱数を発生 double rnd = Math.random() * 10.0; // 変数rndを出力 System.out.print( rnd ); } }
0から99のint型の乱数を発生
int rnd = (int)( Math.random() * 100.0 );
Math.random()に100.0を掛けた値の最小値は0.000...で、最大値は99.999...です。この値をint型でキャストすることで小数点以下が切り捨てられ、0~99の乱数を発生することができます。
Random2.java
001 002 003 004 005 006 007 008 009
public class Random2 { public static void main( String[] args ) { // 0から99のint型の乱数を発生 int rnd = (int)( Math.random() * 100.0 ); // 変数rndを出力 System.out.print( rnd ); } }
-50から50のint型の乱数を発生
int rnd = (int)( Math.random() * 101.0 ) - 50;
Math.random()に101.0を掛けた値の最小値は0.000...で、最大値は100.999...です。この値をint型でキャストすることで小数点以下が切り捨てられ、0~100の乱数を発生することができます。さらに50を引くことで-50~50の値が得られます。
Random3.java
001 002 003 004 005 006 007 008 009
public class Random3 { public static void main( String[] args ) { // -50から50のint型の乱数を発生 int rnd = (int)( Math.random() * 101.0 ) - 50; // 変数rndを出力 System.out.print( rnd ); } }
乱数の利用例
関連コンテンツ
円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。ラジアンを乱数で発生して座標を計算しています。
円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。度単位の角度の乱数をラジアンに変換して座標を計算しています。