2015.12.27

乱数(ランダム)

random

はじめに

乱数は、不規則で予測不能な数のことです。

JavaMath.randomメソッドは0.0以上で1.0より小さい実数乱数を得ることができます。

この値は何らかの計算式により求められているので本当の意味での乱数ではありませんが、数値発生の規則性が少ないで乱数として使用されます。このような方法で作る乱数擬似乱数と呼ばれています。

Math.randomメソッドの仕様は以下のとおりです。

Math.randomメソッド

public static double Math.random()
・乱数を返します。

  パラメータ なし

  戻り値     0.0以上、1.0未満の乱数

以下は、Math.メソッド戻り値を出力するソースコードです。

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;

Math.random()に10.0を掛けた値の最小値は0.000...で、最大値は9.999...になります。

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型の乱数を発生

Math.randomメソッドに100.0を掛けて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型の乱数を発生

Math.randomメソッドに101.0を掛けてint型型キャストした値から50を引きます。

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

乱数の利用例

ギャンブルゲームの作成(サイコロトランプ、ルーレット、じゃんけんなど)

ゲームでの敵の動き、出現確率

パスワードの自動生成

暗号鍵の生成

標本の無作為抽出

ノイズの生成

関連コンテンツ

1から6のサイコロの目が出る確率を割り出すプログラムの作りかたを解説しています。

2020.05.07

2つのサイコロを振って同じ目が出る確率を割り出すプログラムの作り方を解説しています。

2020.08.25

乱数を使って指定サイズのノイズ画像を作る方法を解説します。Javaのソースコード付きです。

2016.05.26

乱数を使って指定の画像にノイズ画像を加える方法を解説します。

2016.06.14

乱数を使って指定サイズのノイズ画像を作る方法を解説します。ノイズが発生する割合はパーセントで指定します。

2020.11.11

円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。ラジアンを乱数で発生して座標を計算しています。

2019.09.27

円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。度単位の角度の乱数をラジアンに変換して座標を計算しています。

2019.09.27

円の中心座標(ox,oy)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。

2019.09.27

1つだけ違う文字を目視で探す「文字の間違い探し」をJavaで作成しました。

2020.06.02

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

2つの値のうち、小さい方の値と、大きい方の値を取得する方法。

2020.03.23

データの型を変換する方法を詳しく解説しています。例)int型 → long型

2015.11.01

トランプ(カード)を扱うクラスを紹介しています。

2019.08.05

簡単な「じゃんけん」ゲームの作り方をソースコードを使って詳しく説明しています。

2023.05.22

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

基準とする座標に最も近い座標を複数の座標から探す方法は?

2021.03.10

連続で「じゃんけん」ができるプログラムの作り方をソースコードを使って詳しく説明しています。

2023.05.23

トランプゲームの1つポーカーの役を判定をプログラムを作成してみませんか?。興味のある方は、ご覧ください。

2020.08.27

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

配列に格納されている数値をランダムに並び替える方法を詳しく解説しています。ソースコード付きです。

2016.01.31

画像を、幾何学模様のカラフルなガラスを張って作られたような画像に変換する方法を解説しています。ソースコード付きです。

2017.03.01

広告