获得一个返回随机英文单词(最好是名词)的函数的最佳方法是什么,而不事先在文件中保留所有可能单词的列表?
8 回答
你不能。没有生成有意义的词的算法。您只能生成听起来像英语的单词,但它们没有任何意义。
您可以让该函数尝试解析在线资源,例如:
另一种理论方法:您可以抓取随机的维基百科文章页面并返回文章的第 N 个单词。
只需使用 setgetgo 的随机词 api。它是免费的,它很容易,而且它很摇滚。
这里有一个随机词生成器——它不是英语,而是英语,即这些词与语言足够相似,用户可以阅读这些词并将它们存储在短期记忆中。
源代码在 C# 中,有点杂乱无章,但您可以在 Python 中使用类似的方法来生成大量单词,而无需存储大量列表。
或者,您可以直接在演示页面上调用 Web 服务 - 不过它托管在 GoDaddy 上,因此不能保证它可以在生产环境中运行!
您可以从http://www.math.toronto.edu/jjchew/scrabble/lists/下载“SOWPODS 和 TWL 常用词”列表。我将这些文件中的所有单词放在一起,列表的重量约为 642k。以任何标准衡量都不算大。不过,这些列表确实包含很多晦涩难懂的词,因为它们是供比赛拼字游戏使用的。好消息是这些列表构成了英语的一个重要子集。
好吧,你有三个选择:
- 硬编码单词列表并用它初始化一个数组。
- 从 Internet 位置而不是文件中获取列表。
- 将可能的单词列表保存在文件中。
避免上述情况的唯一方法是,如果您不关心单词是否真实:您可以生成随机长度的字符串。(如果没有字典列表,就无法以编程方式生成单词。)