IC Learning Visualizer 一致指数を段階的に理解する教育ツール
ICを段階的に理解しよう
ステップ 1 / 5
ステップ1: ICとは何か?
一致指数(IC)とは、「テキストから2文字をランダムに選んだとき、それらが同じ文字である確率」です。
HELLO
↓
たとえば「HELLO」から2文字選ぶと...
- H と E → 違う(×)
- L と L → 同じ(○)
- 同じ文字ペアを選ぶ方法: L×(L-1) = 2×1 = 2通り
- H と E → 違う(×)
- L と L → 同じ(○)
- 同じ文字ペアを選ぶ方法: L×(L-1) = 2×1 = 2通り
ステップ2: 実際に計算してみよう
📐 ICの計算式
IC =
Σ ni(ni-1)
N(N-1)
各項目の意味:
- ni: 各文字iの出現回数
- N: 総文字数
- Σ ni(ni-1): 同じ文字のペア数の合計
- N(N-1): 全文字から2つ選ぶ方法の数
文字 | 出現回数(n) | ペア数 n(n-1) |
---|
🧮 数式の各項目を計算
N (総文字数):
5
N(N-1) (分母):
20
= 5 × 4
Σni(ni-1) (分子):
2
IC = 分子 ÷ 分母 =
0.1000
= 2 ÷ 20
ステップ3: 文字分布とICの関係
すべて異なる文字
ABCDEFGHIJ
IC = 0.0000
重複なし → 一致確率0%
完全ランダム
QJXZFWHMKP
IC ≈ 0.0385
26文字均等出現 → 低いIC
均等分布(少数文字)
AABBCCDDEE
IC = 0.1111
5文字が均等 → 中程度IC
偏った分布
AAAAAABBCD
IC = 0.3111
特定文字が多い → 高いIC
ステップ4: 実際の言語のIC
🎲 完全ランダム
IC ≈ 0.038526文字が均等に出現
🇬🇧 英語
IC ≈ 0.067E, T, A などが頻出
🔐 暗号文
IC ≈ 0.045多表式暗号で平坦化
💡 重要な洞察:
自然言語は文字の出現頻度に偏りがあるため、ICが高くなります。
これを利用して暗号解読や言語判定ができるのです!
ステップ5: 理解度チェック
Q1: 次のうち、ICが最も高いのはどれ?
Q2: 英語のICが約0.067である理由は?
様々なテキストのIC分析
サンプルを選択
テキスト入力
文字頻度分布
統計情報
文字数
0
IC値
0.0000
推定タイプ
未分析
IC値の比較
テキストタイプ推定
分析を実行してください
モンテカルロ法でICを体感
🎲 モンテカルロ法とは?
ランダムサンプリングを繰り返して統計的性質を推定する方法です。 ここでは「テキストから2文字を無作為に選ぶ」実験を何度も繰り返し、 一致する確率(= IC)を実験的に求めます。
実験設定
選択されたテキスト
テキストを選択してください
文字数:
0
理論IC:
0.0000
現在の試行
位置1:
-
-
位置2:
-
-
結果: -
統計情報
試行回数
0
一致回数
0
実験IC
0.0000
理論IC
0.0000
収束グラフ
ICの応用と暗号解析
📊 言語判定
各言語には固有のIC値があります:
- 英語: 0.066-0.070
- フランス語: 0.074-0.078
- ドイツ語: 0.072-0.076
- スペイン語: 0.073-0.077
- イタリア語: 0.074-0.076
- 日本語(ローマ字): 0.076-0.080
🔐 暗号タイプの判別
単一換字式暗号
IC ≈ 平文と同じ(0.065-0.070)
文字を1対1で置換するだけなので、頻度分布は保持される
多表式暗号
IC ≈ 0.038-0.050
複数の換字表を使うため、頻度分布が平坦化される
転置式暗号
IC ≈ 平文と同じ
文字の順序を変えるだけなので、頻度は変わらない
🔑 ヴィジュネル暗号の鍵長推定
フリードマンのテストを使った鍵長推定: