率直に言って、私の数学的スキルを超えた何かを実装する方法について考えてきました。ですから、私が感謝している完全なコードソリューションではなく、自由に試して正しい方向に向けてください。
では、テキストを分析して、さまざまな 2 文字の組み合わせの頻度の表を作成したとします。これらを 26x26 配列に格納しました。例えば。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A 1 15 (frequency of AA, then frequency of AB etc.)
B 12 0 (freq of BA, BB etc..)
... etc.
したがって、これらの2文字の組み合わせをランダムに選択したいのですが、頻度に基づいて選択を「重み付け」したいと思います。すなわち。上記のABは、AAよりも15倍「可能性が高い」はずです。そして、明らかに、選択は BB のようなものを返すべきではありません (つまり、0 の頻度 - この例では、明らかに BB は Bubble!! :-) のような単語で発生します)。0 の場合、0 以外の頻度になるまでループできることがわかりましたが、平均を歪める方法があるという感覚/直感があるため、それはエレガントではありません。
ペアの最初の文字を選択することを考えていました-つまり。行 - (私は最終的に 4 ペア シーケンスを生成しています) システム ランダム関数 (Random class.Next) を使用してから、「加重」ランダム アルゴリズムを使用して 2 番目の文字を選択することができます。
何か案は?