12

获得一个返回随机英文单词(最好是名词)的函数的最佳方法是什么,而不事先在文件中保留所有可能单词的列表?

4

8 回答 8

28

单词列表不需要占用那么多空间。

这是一个包含 2,465 个单词的 JSON 单词表,都是名词。它的时钟频率低于 50K,即中型 jpeg 图像的大小。

我将选择一个随机的作为练习给读者。

于 2009-02-27T14:25:32.790 回答
10

你不能。没有生成有意义的词的算法。您只能生成听起来像英语的单词,但它们没有任何意义。

于 2009-02-27T10:49:11.793 回答
4

您可以让该函数尝试解析在线资源,例如:

http://www.zokutou.co.uk/randomword/

于 2009-02-27T10:50:14.023 回答
3

另一种理论方法:您可以抓取随机的维基百科文章页面并返回文章的第 N 个单词。

于 2009-02-27T10:58:46.483 回答
2

只需使用 setgetgo 的随机词 api。它是免费的,它很容易,而且它很摇滚。

http://randomword.setgetgo.com/

于 2011-06-14T06:33:31.847 回答
1

这里有一个随机词生成器——它不是英语,而是英语,即这些词与语言足够相似,用户可以阅读这些词并将它们存储在短期记忆中。

源代码在 C# 中,有点杂乱无章,但您可以在 Python 中使用类似的方法来生成大量单词,而无需存储大量列表。

或者,您可以直接在演示页面上调用 Web 服务 - 不过它托管在 GoDaddy 上,因此不能保证它可以在生产环境中运行!

于 2010-01-13T23:10:26.733 回答
1

您可以从http://www.math.toronto.edu/jjchew/scrabble/lists/下载“SOWPODS 和 TWL 常用词”列表。我将这些文件中的所有单词放在一起,列表的重量约为 642k。以任何标准衡量都不算大。不过,这些列表确实包含很多晦涩难懂的词,因为它们是供比赛拼字游戏使用的。好消息是这些列表构成了英语的一个重要子集。

于 2010-01-13T23:25:29.147 回答
0

好吧,你有三个选择:

  • 硬编码单词列表并用它初始化一个数组。
  • 从 Internet 位置而不是文件中获取列表。
  • 将可能的单词列表保存在文件中。

避免上述情况的唯一方法是,如果您不关心单词是否真实:您可以生成随机长度的字符串。(如果没有字典列表,就无法以编程方式生成单词。)

于 2009-02-27T10:48:44.917 回答