12

我编写了一个程序,可以对单词进行排序并确定任何字谜。我想生成一个随机字符串数组,以便我可以测试我的方法的运行时。

public static String[] generateRandomWords(int numberOfWords){
String[] randomStrings = new String[numberOfWords];
Random random = Random();
    return null;
}

(方法存根)

我只想要长度为 1-10 的小写单词。我读了一些关于生成随机数,然后转换为 char 或其他东西的内容,但我并不完全理解。如果有人可以告诉我如何生成随机单词,那么我应该可以轻松地使用 for 循环将单词插入数组中。谢谢!

4

6 回答 6

22

您需要实际的英语单词,还是只包含字母 az 的随机字符串?

如果您需要实际的英语单词,唯一的方法是使用字典,并从中随机选择单词。

如果您不需要英语单词,那么可以这样做:

public static String[] generateRandomWords(int numberOfWords)
{
    String[] randomStrings = new String[numberOfWords];
    Random random = new Random();
    for(int i = 0; i < numberOfWords; i++)
    {
        char[] word = new char[random.nextInt(8)+3]; // words of length 3 through 10. (1 and 2 letter words are boring.)
        for(int j = 0; j < word.length; j++)
        {
            word[j] = (char)('a' + random.nextInt(26));
        }
        randomStrings[i] = new String(word);
    }
    return randomStrings;
}
于 2011-02-10T00:17:50.447 回答
12

来自 commons-lang 的RandomStringUtils

于 2011-02-10T00:13:14.737 回答
4

为什么要生成随机词?什么时候可以使用一些词典

于 2011-02-10T00:11:36.240 回答
4

如果要生成给定长度的随机单词,则需要一种算法来确定给定字符串是否为单词(硬),或者访问给定语言中所有单词的单词列表(简单)。如果有帮助,这里是拼字游戏词典中每个单词的列表

一旦您拥有一种语言中所有单词的列表,您就可以将这些单词加载到一个ArrayList或其他线性结构中。然后,您可以在该列表中生成一个随机索引以获取随机词。

于 2011-02-10T00:13:51.587 回答
2

您可以为要生成的每个单词调用此方法。请注意,生成字谜的概率应该相对较低。

String generateRandomWord(int wordLength) {
    Random r = new Random(); // Intialize a Random Number Generator with SysTime as the seed
    StringBuilder sb = new StringBuilder(wordLength);
    for(int i = 0; i < wordLength; i++) { // For each letter in the word
        char tmp = 'a' + r.nextInt('z' - 'a'); // Generate a letter between a and z
        sb.append(tmp); // Add it to the String
    }
    return sb.toString();
}
于 2011-02-10T00:13:55.313 回答
1

如果你想要随机单词而不使用字典......

  1. 列出你想要的所有字母
  2. 生成随机索引以从列表中挑选出一个字母
  3. 重复直到你有你想要的字长

对要生成的单词数重复这些步骤。

于 2011-02-10T00:13:39.167 回答