-PR-
解決済み

乱数の桁数指定、または範囲指定。

  • すぐに回答を!
  • 質問No.972923
  • 閲覧数9329
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 58% (70/120)

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

わかる方、教えていただけると幸いですm(_ _)m
よろしくお願い致します。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル10

ベストアンサー率 75% (97/129)

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

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

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

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

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 30% (2593/8599)

JAVAは詳しくないので考え方だけ。
2桁(0~19)  int(random*20)
2桁(1~20)  int(random*20)+1
2桁(25から70)int(random*45)+26

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


  • 回答No.2
レベル9

ベストアンサー率 33% (30/90)

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

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

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

というのではいかが。
このQ&Aで解決しましたか?
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

-PR-
ページ先頭へ