2015.12.27
2025.01.22
乱数(ランダム)

はじめに
乱数は、不規則で予測不能な数のことです。
この値は何らかの計算式により求められているので本当の意味での乱数ではありませんが、数値発生の規則性が少ないで乱数として使用されます。このような方法で作る乱数は擬似乱数と呼ばれています。
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 ); } }
乱数の利用例
乱数(ランダム)に関するコンテンツ
「乱数(ランダム)」に関係があるコンテンツをまとめています。
- アクセス
- 最も近い座標を探す
- サイコロの出目確率
- 2つのサイコロの出目の和の確率
- ゾロ目の出る確率
- 「じゃんけん」の作成 その1
- 「じゃんけん」の作成 その2
- 文字の間違い探し
- トランプの操作
- モンティ・ホール問題
- ノイズ画像の作成
- 画像にノイズを加える
- 正確な割合のノイズ画像作成
- 円周上のランダムな座標を求める その1
- 円周上のランダムな座標を求める その2
- 円周上のランダムな座標を求める その3
- ポーカーの役判定
- 乱数で文字列を生成
- 乱数を生成するRandomクラス
- 神経衰弱
- 神経衰弱 その2
- 神経衰弱 その3
- 神経衰弱 その4
- 神経衰弱 その5
- 配列の並び替え(シャッフル)
- ステンドグラス風画像
以上です。
関連コンテンツ
円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。ラジアンを乱数で発生して座標を計算しています。
円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。度単位の角度の乱数をラジアンに変換して座標を計算しています。