26文字から等しい確率で1文字を抽出。各文字は4.7ビットのエントロピーを持ちます。
26個の候補からランダムに文字を引くことは、有限アルファベット上の離散一様分布です。各文字の確率はちょうど1/26 ≈ 3.85%です。各抽出は独立であり、文字「A」が一度出たことは、次に「A」が出るかどうかに一切影響しません。この独立性こそが、ランダムテキストと自然言語を分けるものです。自然言語では、文字の並びは語彙、文法、音韻によって形成された深い統計的パターンに従います。
英語のテキストでは、文字の出現頻度は著しく不均一です。サミュエル・モースは1830年代に電信符号を設計する際にこれを数値化しました。彼は印刷所の活字ケースの文字を数え、Eが約13%、Tが約9%、Zはわずか0.07%しか出現しないことを発見しました。彼の頻度順位(ETAOIN SHRDLU)は、植字工や暗号学者の間で伝説となりました。ランダム文字ジェネレーターはこれらすべてを無視します。すべての文字が同一の3.85%の確率で出現し、自然言語とはまったく異なる配列を生成します。このコントラストこそが、システムがすべての入力を平等に扱うかどうかをテストするためにこのツールが有用である理由です。
26文字すべてが少なくとも1回出現するまでに、何回ランダムに文字を引く必要があるでしょうか?多くの人は30回程度と推測します。数学的な答えはおよそ100回です。正確には、期待値は26 × H(26) ≈ 26 × 3.85 ≈ 100.2であり、H(26)は第26調和数(1 + 1/2 + 1/3 + … + 1/26の和)です。最初の数文字はすぐに揃います。最後の1、2文字には気が遠くなるほど時間がかかります。ユニークな文字を20個集めた時点でも、セットを完成させるにはさらに約26 × (1/6 + 1/5 + 1/4 + 1/3 + 1/2 + 1) ≈ 64回の抽出が必要です。上のカバー率チャートはこの過程をリアルタイムで追跡します。
この現象はクーポンコレクター問題として知られ、コンピューターサイエンス、生態学(種のサンプリング)、品質保証(すべての欠陥タイプをカバーするためにテストすべきアイテム数)など、さまざまな分野で登場します。フィリップ・フラジョレとロバート・セジウィックは、解析的組み合わせ論に関する画期的な著作でその現代的な解析フレームワークを提供しました。
各文字はWeb Cryptography APIのcrypto.getRandomValues()によって選択されます。ランダムなバイトが生成され、棄却サンプリングを使用して26文字の範囲にマッピングされます。0〜255のバイト範囲内で26の最大の正確な倍数である234を超える値は破棄され、再抽出されます。これにより、AからDがわずかに出やすくなる剰余バイアスが排除されます。結果として、アルファベット上の数学的に完全な一様分布が、すべてブラウザ内で生成されます。
各生徒に/letter/100にアクセスして100文字のランダムな文字を生成させてください。各文字の出現頻度を集計し、期待値である1文字あたり約3.85回と比較させます。ある文字が8回以上出現し、別の文字が0回という生徒も出てくるでしょう。クラスでの議論のテーマ:このジェネレーターには偏りがあるのか?ヒストグラムが、より多くの文字が蓄積されるにつれて均等な高さに近づいていく様子を視覚的に示してくれます。
暗号解析のより深い演習として、頻度分析の先駆者である9世紀のアラブの学者アル・キンディーに触発され、生徒にランダム配列と英文の段落を比較させましょう。ランダム配列は平坦な頻度分布を持ちますが、英文の段落ではE、T、Aに劇的なピークが現れます。このコントラストは、ランダムさには構造があり、その構造は測定可能であるという概念を紹介します。このツールにはアカウント登録は不要で、生徒のデータは一切保存されません。
すべての文字はブラウザ内で生成されます。サーバーはページを配信し、デバイスがランダム性を生成します。履歴はお使いのデバイスのlocalStorageに保存されます。URLを共有しても、共有されるのはツールの設定のみです。受信者は自身のデバイスのエントロピーから独自の文字を生成します。
URLで個数を制御できます:
リンクを共有しましょう。同じアルファベット、異なる運命。結果を比較してみてください。
日々のインスピレーション
A' Design Awardの審査員が選んだ作品を毎朝お届けします。