如何制作随机文本 python

How to make a random text python

我需要帮助来输出随机文本。 我得到了一个包含 25k 个单词的文本,从这个 text_file 我一直在计算单个字母的概率,以及单个单词以查看哪个 letters/words 被使用最多。

现在我需要再写一个500个字母的文本,但是这个文本应该包括我计算的概率,并且应该是我从第一个文本中 "found" 的字母写的。

就像: Text1 -> 对使用的字母进行概率计算,哪些字母出现最多。 生成 text2 -> 使用你从 text1 中找到的概率。

希望你能帮助我,我是 Python 的新人。

你可以这样做:

import string
import random

def get_random_letter():
    # depends how you want to randomize getting your letter
    return random.choice(string.letters)

random_letters = []
for i in range(500):
    random_letter = get_random_letter()
    random_letters.append(random_letter)

with open("text.txt", 'w') as f:
    f.write("".join(random_letters))

您可以根据您的概率模型和 return 那个字符更改 "get_random_letter" 定义(在这种情况下,您不需要导入 random 或 string,这些只是用作示例) .

编辑:要根据特定重量获取字母,您可以使用此:

import random

inputs = ['e', 'f', 'g', 'h']
weights = [10, 30, 50, 10]

def get_random_letter(inputs, weights):
    r = random.uniform(0, sum(weights))
    current_cutoff = 0
    for index in range(len(weights)):
        current_cutoff = current_cutoff + weights[index]
        if r < current_cutoff:
            return inputs[index]

print get_random_letter(inputs, weights)

这是从这里的post派生出来的:Returning a value at random based on a probability weights

最简单的就是随机select个25k文件的字母。那么结果与原来的概率相同。

import random
print(''.join(random.choice(original_text) for _ in range(500)))

我现在有这个:

def random_text():
   return(''.join(random.choice(text) for _ in range(500)))

random_letters = []

for i in range(1):
random_letter = random_text()
random_letters.append(random_letter)

print random_letters

现在只运行一次。 但是我不知道如何将输出文本编码成utf-8?