Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android应用程序中随机生成有意义(有效)的英语单词_Java_Android_String_Dictionary - Fatal编程技术网

Java 在Android应用程序中随机生成有意义(有效)的英语单词

Java 在Android应用程序中随机生成有意义(有效)的英语单词,java,android,string,dictionary,Java,Android,String,Dictionary,我正在申请一本字典。我正在使用Pearson Dictionary API实现同样的功能。我需要生成一个单词,以便查询该单词的定义 问题 我知道如何生成一个随机单词,但我不知道如何生成一个有意义的英语单词 我试图通过请求一个JSON响应并检查响应中的results[](results[]保留单词的定义)来解决这个问题。因此,如果results[].lenght>0,则该单词是有效的英语单词 但是上面的解决方案有它自己的严重问题:假设我想生成一个5个字母的单词,有多达26^5=11881376不同

我正在申请一本字典。我正在使用Pearson Dictionary API实现同样的功能。我需要生成一个单词,以便查询该单词的定义

问题

我知道如何生成一个随机单词,但我不知道如何生成一个有意义的英语单词

我试图通过请求一个JSON响应并检查响应中的
results[]
(results[]保留单词的定义)来解决这个问题。因此,如果
results[].lenght>0
,则该单词是有效的英语单词

但是上面的解决方案有它自己的严重问题:假设我想生成一个5个字母的单词,有多达
26^5=11881376
不同的组合,而没有那么多5个字母有意义的英语单词。随着单词中字母的增加,组合的数量也随之增加。因此,生成一个有意义的单词可能需要很长时间

如何检查生成的单词是否是有意义的英语单词?是否有任何可行的编程方式来实现这一点?


或者有没有其他方法可以解决这个问题?

有一个漂亮的文本文件,包含所有英文单词:

然后,您可以根据此文本文档中的内容生成5个字母的单词:)


获取每行的长度,或者只生成并与文本文件进行比较:)

我希望我正确理解您的问题:

如果您需要随机的英语单词,那么您可以使用API。请看以下链接:

请求会给你一个随机的英语单词作为响应

如果需要特定长度,则可以使用以下链接:


不要随机操作,因为您需要花时间验证,只需存储所需单词的词典,并为其提供查找表即可

一本相对完整的英语词典大约有2MB的压缩,就像这里的一样

即使是Android应用程序,除非你的目标是真正动力不足的设备,否则它也不会那么大

您可以使用SQLite来存储数据,这样它可能会占用更多的存储空间,但是您可以使用SQL作为查询语言,而不是自己编写查询语言

因为您还需要一些随机性,所以每一行都可以添加某种类型的随机键,以便进一步查询


如果您真的想将其限制为5个字符,那么只需使用字典的子集即可。但这将允许您拥有任意长度甚至长度范围(例如2到10个字符)

据我所知,您可以生成随机的字母字符串并检查它们是否是单词(正如您所意识到的,这是非常缓慢的,命中或不命中的方法),或者存储一个“已知良好”单词列表并从该列表中随机选择

这个列表需要有多大取决于你想要达到的目标

据《牛津英语词典》称,该词典共有约171476个主要词条,不包括复数(cat,cats)、标准变体(sit,siting)等变体,也不包括多个类别的单词(例如,dog可以是名词[动物]或动词[持续跟随]等)。据一个成年人平均知道20000到35000个单词,所以谨慎地选择50000个单词应该涵盖大多数通用用途


答案(现已关闭)为单词列表提供了许多来源。对其中一个单词(最初由infochimps.org提供,但可作为a获得)的研究表明,350000多个单词的平均长度不到10个字符。对于Linux(可能还有其他风格)
/usr/share/dict/words
可能是一个有用的起点。

您可以生成随机的字母字符串,看看它们是否是单词(正如您所意识到的,这非常慢),或者存储一个“已知好”单词列表,然后从该列表中随机选择。这个列表需要有多大取决于你想要达到的目标。《牛津英语词典》有171k条主要条目,但一个普通成年人知道大约30000条,所以谨慎选择50000条应该涵盖大部分内容。这不会增加我的应用程序的大小吗?是的,很明显。但是50000 x 10个字母(几乎肯定比平均值高)只有1/2MB左右,有压缩的方法。我在哪里可以找到这样的列表???出于好奇,我刚刚抓到了350000多个单词(包括变体)。这恰好是谷歌搜索“英语单词表”的结果。