第八章 Mathクラスの利用
ランダムな整数の取得
Math.randomメソッドを利用して
ランダムな整数値を取得する方法を紹介します。
int dice =
(int)(Math.random()*6);
目次
ゲームとか
超作ってみたい!!
私もやって
みたいっス!!
ハハハ。
みんなオタクだなぁ。
あなたに言われたくないわよ。
1.Mathクラスの randomメソッド
Mathクラスを使用します。
Mathクラスは、数学的な値やメソッドをstaticで提供してくれる便利なクラスです。
Mathクラスの randomメソッドは、「0.0 ~ 1未満」の値を doubleでランダムに生成します。
書式は以下の通りです。
書式
double rand = Math.random();
doubleの変数「rand」に
ランダムな値を代入するってことっスね。
2.サイコロにする
Math.random()の値を 6倍して、intにキャストすると、0~5 6つの目を持つサイコロになります。
意図的に切り捨てさせるテクニックですね。
もちろん 6倍でなくても、構いません。
1~6 の目にしたい場合は、結果に+1すればOKです。
6目のサイコロ
1. Math.random()の値を 6倍する。
2. intにキャストする。
ここで100倍すれば、
100目のサイコロになるのね。
//Sample18_01.java
class Sample18_01 {
public static void main(String[] args){
double rand = Math.random();//0~1未満
System.out.println(rand);
rand = rand*6;//0~6未満
System.out.println(rand);
int dice = (int)rand + 1;//1~6の整数
System.out.println(dice);
}
}
コマンドライン
>javac Sample18_01.java
>java Sample18_01
0.5293489904057942
3.176093942434765
4
>java Sample18_01
0.10795502200059792
0.6477301320035875
1
>java Sample18_01
0.8232900533313441
4.939740319988065
5
毎回値が違いますね。
3.短い書き方
下記のように1行で書くこともできます。
一行で書いた例
int dice = (int)(Math.random()*6);
//Sample18_02.java
class Sample18_02 {
public static void main(String[] args){
/*1~6 の整数*/
int dice = (int)( Math.random()*6 + 1 );
System.out.println(dice);
}
}
変数「rand」を使わずに記述
こうした書き方は、一般的に可読性が落ちるので推奨されません。
ただ、今回のように多くのプログラマが知っている「慣用句的なコード」は、こうした書き方を許容する場合もあります。
まあ、どっちでも動くんだが。
ちなみにうっかり
(int)Math.random()*6 + 1 ;
とすると、答えが全部 1になるという地雷があります。\(^o^)/
このような書き方は、優しさが足りない感じでしょうか。
このチュートリアルでは、一度紹介したコードを、それ以降短く記述する場合があります。
なるべくわかりやすく紹介しますのでよろしくお願いいたします。
この場合なら
私は短く書くな。
やさしくない!
お疲れ様でした。