user166390 の提案に基づいて、ソリューションをハックすることにしました。表示される頻度は、ウィキペディアから取得した英語用です。プログラムを数回実行し、結果をただ目で見てみると、かなりプレイしやすいように見えます。私は通常、少なくとも 4 文字または 5 文字の単語をいくつか見つけることができます。ゲームはあまり得意ではありません。とにかく、ここにコードがあります:
#!/usr/bin/env python
from random import random
from bisect import bisect_left
letters = [c for c in "abcdefghijklmnopqrstuvwxyz"]
frequencies = [8.167, 1.492, 2.782, 4.253, 12.702, 2.228, 2.015, 6.094, 6.966,
0.153, 0.772, 4.025, 2.406, 6.749, 7.507, 1.929, 0.095, 5.987,
6.327, 9.056, 2.758, 0.978, 2.360, 0.150, 1.974, 0.074]
cumulative_frequencies = [sum(frequencies[0:i+1]) for i in xrange(len(frequencies))]
for i in xrange(5):
line = ""
for j in xrange(5):
line += letters[bisect_left(cumulative_frequencies, random() * cumulative_frequencies[-1])] + " "
print line
アイデアは、生成される各文字に対して、ルーレット ホイール アルゴリズムを使用して、与えられた頻度に比例する確率でランダムに選択することです。