プロが教えるわが家の防犯対策術!

こんにちは。javaで乱数を発生させる場合に
Math.randomというメソッドを使用しているのですが、
桁数指定とかって可能なのでしょうか?
(例)2桁の数値のみをランダムに発生させる等
1桁、3桁は不可。
また、範囲の指定など可能なのでしょうか?
(例) 25から70までの範囲でランダムに発生させる。

わかる方、教えていただけると幸いですm(_ _)m
よろしくお願い致します。

A 回答 (3件)

n ≦ i ≦ m のように


n 以上 m 以下のランダムな整数 i を取得したい場合

random() 関数は 0 ≦ x < 1 の数字を返しますので
下記の式で得られます。

i = Math.floor(Math.random() * (m - n + 1)) + n ;

ランダムとして剰余を使うこともありますが、擬似乱数を線形合同法にて算出している場合、剰余だと系列が偏る可能性があります。
あと、一定の数が出るまでループするというのは、不要なループを繰り返す場合がありますので、すこしもったいない感じがしますね。
    • good
    • 1

多分そういうのはないと思います。


今JavaのAPIドキュメントを持っていませんが、基本的にそういうのは現在使用されているJavaのJDKのバージョンに合ったAPIドキュメントを見ましょう。

ただ、たとえば3桁以内(0~999)の乱数が欲しいなら、取得した乱数を1000で割った余りを使用すればいいだけです。
(例)2桁の数値のみをランダムに発生させる等
取得した乱数を90で割り、あまりに10を加算する、ではどうでしょうか?

(例) 25から70までの範囲でランダムに発生させる。
この場合は、71で割った余りを使用する。余りが25未満の場合は、25以上になるまで繰り返す。

というのではいかが。
    • good
    • 0

JAVAは詳しくないので考え方だけ。


2桁(0~19)  int(random*20)
2桁(1~20)  int(random*20)+1
2桁(25から70)int(random*45)+26

違ってたらごめんなさい。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!