我正在做Think Python: How to Think Like a Computer Scientist中的练习 13.7 。练习的目标是提出一种相对有效的算法,该算法从单词文件(比方说小说)中返回一个随机单词,其中返回单词的概率与其在文件中的频率相关。
作者建议采取以下步骤(可能有更好的解决方案,但这可能是我们迄今为止在本书中介绍的最佳解决方案)。
- 创建一个直方图显示
{word: frequency}
。 - 使用
keys
方法获取书中的单词列表。 - 建立一个包含词频累计总和的列表,使得这个列表中的最后一项就是书中的总词数,
n
。 - 从 1 到 中选择一个随机数
n
。 - 使用二等分搜索查找将在累积和中插入随机数的索引。
- 使用索引在单词列表中找到对应的单词。
我的问题是:以下解决方案有什么问题?
- 将小说变成
t
单词列表,与它们在小说中出现的完全一样,无需消除重复实例或改组。 - 生成一个从 0 到 的随机整数
n
,其中n = len(t) – 1
. - 使用该随机整数作为索引来检索
t
.
谢谢。