2011-02-10 37 views
7

単語をソートしてアナグラムを決定できるプログラムを書いた。私はランダムな文字列の配列を生成して、メソッドのランタイムをテストできるようにしたい。Javaでランダムな単語を生成しますか?

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

(メソッドスタブ)

私は長さ1〜10の小文字の単語をしたいです。私は乱数の生成について何かを読んだり、charや何かにキャストしたりしましたが、私は完全に理解しませんでした。誰かがランダムな単語を生成する方法を私に示すことができれば、forループを使って単語を配列に簡単に挿入できるはずです。ありがとう!

+0

ランダム言葉? (例:乱数+ ???? =ランダムな単語) –

+0

宿題は割り当てられていますか? –

答えて

15

実際の英語の単語、または文字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; 
} 
+0

ありがとう!あなたがする必要があることの1つはcharにキャストするか、そうでなければコンパイラがあなたを驚かせます。みんな、ありがとう! –

+1

いいえ、 '' a''を 'char'にキャストする必要はありませんが、加算の結果です(これは自動的に' int'です)。 –

+0

訂正してくれてありがとう、私はJavaで生のキャラクターを扱って以来、しばらくしています。 –

1

なぜランダムな単語を生成するのですか? some dictionariesを使用できる場合。コモンズ・ラング

+1

私は平均ランタイムを取得しようとしているので、ランダムに生成された単語は私に最高の平均を与えるはずです。また、これは学校の割り当てのため、私は先生が望んでいるものに合致しなければなりません... –

+1

あなたはそれを指定し、あなたの質問に「宿題」とタグを付けるべきでした –

+0

ああ、しかし、私はそれが完全に意味をなさないと思います。私は次回は必ずそうするでしょう。 –

8

RandomStringUtilsあなたは辞書を使わずに、ランダムな単語をしたい場合は...

  1. あなたの言葉であなたが可能たいすべての文字
  2. のリストがランダムに生成してくださいリストから文字を選ぶためのインデックス
  3. 希望の単語の長さになるまで繰り返す

生成する単語数に対して、これらの手順を繰り返します。

+2

リンクが無効です。 – Timo

+0

新しいリンクアップ、もう死んではいません。 –

1

から

3

任意の長さのランダムな単語を生成する場合は、指定された文字列が単語であるかどうかを判断するアルゴリズム(ハード)、または指定された言語のすべての単語の単語リストにアクセスするアルゴリズムが必要です(簡単)。役に立った場合、here's a list of every word in the Scrabble dictionary

言語のすべての単語のリストを取得したら、これらの単語をArrayListまたは他の線形構造に読み込むことができます。そのリストにランダムなインデックスを生成してランダムな単語を取得することができます。

1

生成する単語ごとにこのメソッドを呼び出すことができます。ただし、アナグラムを生成する確率は比較的低いはずです。

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(); 
} 
+1

+1ですが、 'out + = ...の代わりに' StringBuilder'を使うことをお勧めします' – casablanca

+0

@casablancaコンパイラがStringBuilderを使うアルゴリズムを最適化しないのですか? –

+0

@Kin私はそれが最適化されないと確信しています。 – whiskeysierra

関連する問題