坦率地说,我一直在考虑如何实现超出我数学技能的东西。因此,请随时尝试为我指明正确的方向,而不是完整的代码解决方案,我将不胜感激。
所以,假设我已经对文本进行了分析,并生成了一个不同的两个字符组合的频率表。我已将这些存储在 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.
所以我想随机选择这两个字符的组合,但我想根据频率“加权”我的选择。IE。上面的 AB 应该是 AA 的“可能性”的 15 倍。而且,显然,选择永远不应该返回类似 BB 的东西(即频率为 0 - 在这个例子中,显然 BB 确实出现在 Bubble 之类的词中!!:-))。对于 0 的情况,我意识到我可以循环直到我得到一个非 0 的频率,但这并不优雅,因为我有一种感觉/直觉,有一种方法可以扭曲我的平均值。
我正在考虑选择我的第一个字符 - 即。该行 - (我最终生成一个 4 对序列)我可以只使用系统随机函数(Random class.Next)然后使用“加权”随机算法来选择第二个字符。
有任何想法吗?