CodeKitHub
ジェネレーターツール

ランダム文字生成ツール

最終更新:

目を閉じてアルファベットを指さしたり、友人にランダムに一文字を言ってもらったりして手作業で文字を「ランダムに」選ぶのは、偏りがないという点で有名なほど苦手です。人は特定の文字を偶然の確率よりもはるかに好む傾向があります。このツールは、必要な数のランダムな文字を大文字・小文字・混在で生成し、繰り返しを禁止するオプションも備えています。使用しているのは、このサイトのパスワード生成ツールと同じ暗号学的に安全な乱数ソース(crypto.getRandomValues())であり、多くの類似ツールがひそかに使っている弱いMath.random()ではありません。

結果

このツールとは?

ランダム文字生成ツールとは、26文字の英字アルファベットから1つ以上の文字を選び、毎回すべての文字が均等で偏りのない確率で選ばれるようにするものです。そのランダム性の質は、背後にある乱数ソースに完全に依存します。JavaScriptの`Math.random()`を使った素朴な実装は、予測への耐性を意図していない疑似乱数生成器であるのに対し、W3C Web Cryptography APIで定義されている`crypto.getRandomValues()`は、お使いのオペレーティングシステムの暗号学的に安全な乱数ソースに支えられています。

このツールは、生成するすべての文字に`crypto.getRandomValues()`を使用しており、これはこのサイトの[パスワード生成ツール](/password-generator/)と同じアプローチです。文字を選ぶという単純な作業においても、この違いが重要である理由については、[人気ツールが実際に安全な乱数ソースを使用しているかを検証した比較記事](/blog/online-password-generators-math-random-vs-crypto/)をご覧ください。

「繰り返しなし」オプションは、利用可能な文字プールに対してFisher–Yates方式のシャッフルを行い、非復元抽出を行います。これにより、結果に含まれるすべての文字が確実に異なるものになります。一意の一文字コードを割り当てる場合など、文字の重複が問題になる場面で役立ちます。

なぜこれを使うのか?

  • 教室での活動、ゲーム(ランダム文字を使ったアイスブレイクや単語ゲームなど)、抽選などを公平に行うために文字を選ぶ。
  • 誤って重複させることなく、一意の一文字識別子やコードを生成する。
  • 人の無意識の文字の好みに頼るのではなく、本当に偏りのないランダムな文字を得る。
  • 用途に応じて大文字、小文字、混在を選択する。
  • 100%ローカルかつ暗号学的にランダム: すべてcrypto.getRandomValues()を使ってブラウザ内で実行され、サーバーには何も送信されません。

使い方

  1. 生成したい文字数を設定します(1〜100)。
  2. 大文字、小文字、混在のいずれかのケースを選びます。
  3. 結果に含まれるすべての文字を互いに異ならせたい場合は「繰り返しなし」をオンにします。
  4. 「生成」をクリックして結果を作成し、「コピー」をクリックして文字をクリップボードにコピーします。

入力

件数: 5、ケース: 大文字、繰り返しなし: オン

出力

Q, F, B, X, M

実行のたびに異なるランダムな結果が生成されます——これは「繰り返しなし」オプションを有効にした場合の一例であり、5つの文字すべてが確実に異なるものになっています。

文字選択におけるMath.random() vs. crypto.getRandomValues()

気軽なゲームであれば、その違いは目に見えません。しかし予測可能性が本当に問題になる場面では、そうではありません。

特性Math.random()crypto.getRandomValues()
設計目標速度と統計的分布予測不能性、予測への耐性
セキュリティが重要な用途への適性不可——MDNの公式ドキュメント自体がそう明言している可能——OSのCSPRNGに支えられている
このツールでの使用なしあり、生成されるすべての文字に対して

関連ツール

他のランダム生成ツールもこちらからお試しください。

ランダム数値生成ツール · パスワード生成ツール · ファンタジー名前生成ツール

よくある質問

これは本当にランダムですか、それとも単なるMath.random()ですか?

オペレーティングシステムに支えられたWeb Cryptography APIの暗号学的に安全な乱数ソースであるcrypto.getRandomValues()を使用しています——多くの類似ツールが黙って使っている、より弱い疑似乱数生成器Math.random()ではありません。人気の生成ツールが実際に安全な乱数ソースを使っているかどうかを検証した比較記事もあわせてご覧ください。

「繰り返しなし」は何をしますか?

これを有効にすると、ツールは利用可能なプール(単一のケースなら26文字、混在ケースなら52文字)から非復元で文字を抽出するため、結果内のすべての文字が互いに確実に異なります。無効の場合、各文字は独立して選ばれるため、サイコロを何度も振るのと同じように繰り返しが起こり得ます。

生成できる一意の文字の最大数はいくつですか?

大文字のみまたは小文字のみのモードでは26、混在ケースでは52です(同じ文字の大文字版と小文字版は異なる結果としてカウントされるため)。「繰り返しなし」をオンにしてそれ以上をリクエストした場合、件数はプールのサイズに制限されます。

同じ文字が大文字と小文字の両方として現れる混在ケースの文字を生成できますか?

はい——「繰り返しなし」をオフにした混在ケースモードでは、独立して生成されるため「A」と「a」が同じ結果に両方現れることを妨げるものはありません。「繰り返しなし」をオンにして混在ケースを選択した場合、これらは2つの別々のプールのエントリとして扱われるため、両方とも現れる可能性はありますが、それぞれ一度までです。

このツールの使用は追跡されたり、どこかに送信されたりしますか?

いいえ。すべてのランダム生成は、Web Cryptography APIを使ってブラウザ内で完全にクライアントサイドで行われます。何もアップロードされたり記録されたりしません。

関連ツール