如何制作随机文本python

时间:2015-01-13 22:19:04

标签: python string algorithm random letters

我需要帮助来输出随机文本。 我已经收到了一个包含25k字的文本,text_file我一直在计算单个字母的概率,而单个字则用于查看最常用的字母/单词。

现在我需要制作一个包含500个字母的其他文本,但是这个文本应该包括我计算的概率,并且应该用我从第一个文本中“找到”的字母来填充。

就像: Text1 - >使用字母的概率,哪些字母代表最多。 制作text2 - >使用从text1中找到的概率。

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

3 个答案:

答案 0 :(得分:4)

最简单的方法是随机选择25k文件的字母。然后结果与原始概率相同。

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

答案 1 :(得分:0)

你可以这样做:

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))

您可以根据概率模型更改“get_random_letter”定义并返回该字符(在这种情况下,您不需要导入随机或字符串,例如,这些只是用于)。

编辑:要获得基于特定重量的字母,您可以使用:

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)

源于此处的帖子:Returning a value at random based on a probability weights

答案 2 :(得分:0)

我现在已经这样了:

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编码?