我需要帮助来输出随机文本。
我已经收到了一个包含25k字的文本,text_file
我一直在计算单个字母的概率,而单个字则用于查看最常用的字母/单词。
现在我需要制作一个包含500个字母的其他文本,但是这个文本应该包括我计算的概率,并且应该用我从第一个文本中“找到”的字母来填充。
就像: Text1 - >使用字母的概率,哪些字母代表最多。 制作text2 - >使用从text1中找到的概率。
希望你能帮助我,我是Python新手。
答案 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编码?