Java Tips | 実務ユーティリティ:ランダム数字生成

Java Java
スポンサーリンク
スポンサーリンク

なぜ「ランダム数字生成ユーティリティ」が業務で役に立つのか

業務システムでは、「数字だけのランダム値」が驚くほどよく使われます。 ワンタイムパスコード(OTP)、SMS認証コード、検証番号、受付番号、伝票番号の一部、テストデータ用のダミー数値など、用途はかなり広いです。

そのたびに場当たり的に Math.random() を使ったり、Random を直接叩いたりしていると、 コードがバラバラになり、強度や桁数のルールも統一されません。 そこで「ランダム数字生成ユーティリティ」を用意しておくと、 どの機能からも同じルールで数字だけのランダム値を生成できるようになり、 セキュリティ面でも保守性の面でも、かなり楽になります。

ここからは、プログラミング初心者向けにステップバイステップで考えながら、 実務で使えるランダム数字生成ユーティリティを丁寧に解説していきます。

ステップ1:乱数クラスの選び方を理解する

Random と SecureRandom の違いを押さえる

ランダム数字を作るためには、まず「乱数」が必要になります。 Java には代表的な乱数クラスとして、java.util.Randomjava.security.SecureRandom があります。

Random は、ゲームや簡単なシャッフルなど「セキュリティを気にしない用途」には十分ですが、 乱数のパターンを解析されると、次に出てくる値をある程度予測されてしまう可能性があります。

一方 SecureRandom は、暗号用途向けに設計されており、 攻撃者が乱数のパターンを推測しにくいようになっています。

ランダム数字の用途には、次のようなものがあります。

  • セキュリティ用途:OTP、検証コード、トークンの一部など
  • 非セキュリティ用途:テストデータ、ダミーID、UI上のランダム表示など

セキュリティ用途では必ず SecureRandom を使うべきです。 非セキュリティ用途でも、迷ったら SecureRandom に統一しておくと安全です。

ステップ2:「数字だけ」のランダム値をどう作るか

0〜9 の数字をランダムに並べる基本発想

ランダム数字生成の基本は、とてもシンプルです。

  • 「0〜9」の数字を文字として扱う
  • 乱数で 0〜9 のどれかを選ぶ
  • それを指定した桁数分だけ繰り返す

まずは、数字だけの文字列を用意します。

private static final String DIGITS = "0123456789";
Java

この DIGITS の中から、乱数でインデックスを選び、その位置の文字を取り出す—— これがランダム数字生成の基本構造になります。

タイトルとURLをコピーしました