ランダムPIN生成ツールとは?
このツールは、ランダムなPIN(Personal Identification Number=暗証番号)を作成します。PINとは、ATMカード、ネットバンキング、スマホのロック解除など、本人確認やログインに使われる数字の並びのことです。桁数(1〜100桁)と、同じ数字を2回以上使ってよいかどうかを選ぶだけで、ボタンを押すたびに新しいランダムなコードが生成されます。
使い方
「生成するPINの桁数」の欄に、必要な桁数を入力します(一般的なのは4桁や6桁です)。「同じ数字の重複を許可」にチェックを入れたままにすると数字が繰り返し使えます(通常はこの設定)。チェックを外すと、すべての桁が異なる数字になります。あとは計算ボタンを押せばコードが表示されます。出力は数字の「文字列」として扱われるため、先頭のゼロもそのまま保持されます。たとえば「036784」も、れっきとした有効な6桁のPINです。
計算の仕組み
重複ありの場合、各桁は独立した一様乱数で決まります。式は \( d = \lfloor \text{rand()} \times 10 \rfloor \) で、rand() は \([0,1)\) の範囲の値を返します。これにより 0〜9 の各数字が等しく \( \frac{1}{10} \) の確率で選ばれ、PINの総組み合わせは $$ N_{\text{possible}} = 10^{\,\text{PIN Length}} $$ 通りになります。重複なしの場合は、0〜9 の10個の数字をフィッシャー・イェーツ法でシャッフルし、先頭から N 個を取り出します。そのためすべての桁が異なる数字になり、組み合わせの数は順列で $$ N_{\text{possible}} = \frac{10!}{\left(10 - \text{PIN Length}\right)!} $$ 通りです。数字は0〜9の10種類しかないため、重複なしのPINは最大でも10桁までです。それより長い桁数の場合、ツールは自動的に重複ありに切り替えます。
具体例
重複ありで6桁の場合を考えてみましょう。乱数の小数値が \( 0.36 \)、\( 0.61 \)、\( 0.38 \)、\( 0.74 \)、\( 0.85 \)、\( 0.42 \) だったとします。それぞれ10倍して小数点以下を切り捨てると 3、6、3、7、8、4 となり、PINは「363784」になります。数字の3が2回出ていますが、重複ありなのでこれで問題ありません。次に重複なしで4桁の場合、0〜9 のシャッフル結果が \([7,2,9,0,\ldots]\) で始まったとすると、先頭4つを取って「7290」となり、すべて異なる数字になります。
よくある質問
PINはゼロから始まってもいいの? はい。結果は文字列として扱われるため、先頭のゼロも保持され、消えてしまうことはありません。
なぜ12桁の「重複なし」PINが作れないの? 数字は0〜9の10種類しかないからです。10桁を超えるPINは必ず同じ数字を再利用することになるため、ツールが自動的に重複ありモードに切り替えます。
本物の口座に使えるほど安全? このツールは一般的な疑似乱数生成器を使っており、暗号学的な安全性は保証されていません。日常のちょっとした用途には十分便利ですが、高いセキュリティが求められる鍵を作る場合は、専用の暗号学的ツールをご利用ください。