【问题标题】:Efficient way to generate a random alphabet in Python skewed towards popular letters? [duplicate]在 Python 中生成偏向流行字母的随机字母的有效方法? [复制]
【发布时间】:2020-03-26 17:33:40
【问题描述】:

我想生成一个随机字母,但随机性偏向于该字母的流行程度。 例如“E”,是英文字母表中最常见的字母,所以它的概率应该最高。

我发现这个frequency table 来定义一封信的受欢迎程度。

我的幼稚做法如下:

import random

popularity_dict =  {'E': 21912, 'T': 16587, 'A': 14810, 'O': 14003, 'I': 13318, 'N': 12666, 'S': 11450, 'R': 10977, 'H': 10795, 'D': 7874, 'L': 7253, 'U': 5246, 'C': 4943, 'M': 4761, 'F': 4200, 'Y': 3853, 'W': 3819, 'G': 3693, 'P': 3316, 'B': 2715, 'V': 2019, 'K': 1257, 'X': 315, 'Q': 205, 'J': 188, 'Z': 128}
#scraped from the given link

letter_list = []
for letter, popularity in popularity_dict.items():
    letter_list.extend([ letter] * popularity)


print(random.choice(letter_list))

我想知道是否有更有效的方法来解决这个问题

【问题讨论】:

标签: python random


【解决方案1】:
import random

popularity_dict =  {'E': 21912, 'T': 16587, 'A': 14810, 'O': 14003, 'I': 13318, 'N': 12666, 'S': 11450, 'R': 10977, 'H': 10795, 'D': 7874, 'L': 7253, 'U': 5246, 'C': 4943, 'M': 4761, 'F': 4200, 'Y': 3853, 'W': 3819, 'G': 3693, 'P': 3316, 'B': 2715, 'V': 2019, 'K': 1257, 'X': 315, 'Q': 205, 'J': 188, 'Z': 128}

print(random.choices(population=list(popularity_dict.keys()), weights=list(popularity_dict.values())))

哦,如果您需要更多随机字母 - 比如说十个 - 只需将 k=10 添加到参数列表中。

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2021-09-23
    • 2022-01-16
    • 2011-02-18
    • 2018-12-13
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    相关资源
    最近更新 更多