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

実際の英単語が必要ですか、それとも a ~ z の文字のみを含むランダムな文字列が必要ですか?

実際の英単語が必要な場合は、辞書を使用してランダムに単語を選択するしかありません。

英単語が必要ない場合は、次のようにします。

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

与えられた長さのランダムな単語を生成したい場合、与えられた文字列が単語であるかどうかを判断するアルゴリズムが必要になるか (難しい)、与えられた言語のすべての単語の単語リストにアクセスする必要があります (簡単です)。お役に立てれば、Scrabble 辞書のすべての単語のリストを次に示します。

言語内のすべての単語のリストを取得したら、それらの単語を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 に答える