整数値の乱数を発生させたい-初心者のためのJava逆引きTips集

Java逆引きTips集

はじめに

本稿は初心者のためのJavaのTipsです。今回は整数値の乱数(例えば1~10の乱数)を発生させる方法を解説します。

整数の乱数を発生させるには?

整数の乱数を発生させるには以下のように書きます。

サンプルコード

上記のサンプルコードでは0~10のいづれかの値が変数「rand」に格納されます。

int rand = new java.util.Random().nextInt(●);という文の「●」に入る値自体は乱数の範囲に含まれない点に注意して下さい。例えば「●」に10を指定すると0~9のいづれかの値をランダムに取得できます。

(参考)0以上1未満の少数型の乱数を取得する方法

Math.random()を用いると0以上1未満の乱数を取得できます。

サンプルコード

(参考2)Math.random()を用いて1~10の乱数を取得する方法

int rand = new java.util.Random().nextInt();を用いれば整数値の乱数を取得できるので、それで十分かもしれません。しかしこの記事は「初心者のためのJavaプログラミングTips」なので、”別解”を学習しておいて損はありません。他の人が書いたプログラムでは、もしかすると、Math.random()を用いる方法で整数の乱数を取得しているかもしれません。また型変換の勉強にもなります。

手順の解説

上記の実行結果例を思い出して下さい。このような少数を整数にするには、以下のステップで数値を操作する必要があります。

  1. 10倍する(0.205…ならば2.05…になりますね)。
  2. 1を足す(0.0862…を10倍すると、0.862…になります。今回は1~10の乱数を取得したいので、一の位が0ではまずいのです。そのため一の位が0の場合もあるので1加算します。0.862…ならば1.862…になりますね。またどの少数を10倍しても一の位が10になることはありません。なぜなら、10倍しただけでは、「0.xxx…~9.xxx…」しか取得できないからです。そこで、10.xxx…を作るためにも「1」を加算する必要があります。元の値を10倍した値が9.xxx…ならば、そこに1を足せば、10.xxx…になりますよね)。
  3. 小数点以下を切り捨てる(2.05…ならば「2」になります。1.862…ならば「1」になります。同様に例えば9.163ならば「9」になります)。

小数点以下を切り捨てる方法

例えば、3.14という数値の小数点以下を切り捨てて、3という整数だけを取り出す方法を解説します。

キャストを用いる方法

double型の値を無理矢理にint型にしてしまえば、結果的に小数点以下が無視され、整数部のみが残ります。

「int num = (int)3.14;」のような記法を「キャスト」と言います。キャストは例えばdouble型の値を強制的にint型に型変換します。その結果、小数点以下は破棄され、整数部の3のみが残ります。またint型に変換されるので「3.0」ではなく「3」になります。

以上のポイントを踏まえて、サンプルコードを見てみましょう。

サンプルコード

元の値(0.xxx…)を10倍して1を足し(int)によって強制的にdoubleからintへ型変換し、結果的に整数部をもぎ取っていますね。

関連項目

  • none

 

初心者のためのJava逆引きTips集TOPへ戻る

[AD]初心者にやさしい最強のJava入門書!「新・明解Java入門 (明解シリーズ)」

 




 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA