Générer des mots aléatoires en Java?


J'ai écrit un programme qui peut trier les mots et déterminer les anagrammes. Je veux générer un tableau de chaînes aléatoires afin que je puisse tester ma méthode d'exécution.

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

(stub de méthode)

Je veux juste des mots minuscules de longueur 1-10. J'ai lu quelque chose sur la génération de nombres aléatoires, puis la conversion en char ou quelque chose, mais je ne comprenais pas totalement. Si quelqu'un peut me montrer comment générer des mots aléatoires, alors je devrais facilement pouvoir simplement utiliser une boucle for pour insérer les mots dans tableau. Merci!

Author: Chris Dennett, 2011-02-10

6 answers

Avez-vous besoin de mots anglais réels, ou simplement de chaînes aléatoires qui ne contiennent que des lettres a-z?

Si vous avez besoin de mots anglais réels, la seule façon de le faire est d'utiliser un dictionnaire et d'en sélectionner des mots au hasard.

Si vous n'avez pas besoin de mots anglais, alors quelque chose comme ça fera:

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;
}
 16
Author: David Yaw, 2011-02-10 01:01:39

RandomStringUtils de commons-lang

 9
Author: Aravind R. Yarram, 2015-08-29 18:31:34

Si vous voulez générer des mots aléatoires d'une longueur donnée, vous aurez besoin d'un algorithme pour déterminer si une chaîne donnée est un mot (difficile), ou d'accéder à une liste de mots de tous les mots d'une langue donnée (facile). Si cela aide, voici une liste de tous les mots du dictionnaire Scrabble .

Une Fois que vous avez une liste de tous les mots dans une langue, vous pouvez charger ces mots en ArrayList ou autre structure linéaire. Vous pouvez ensuite générer un index aléatoire dans cette liste pour obtenir le aléatoire mot.

 3
Author: templatetypedef, 2011-02-10 00:13:51

Si vous voulez des mots aléatoires sans utiliser de dictionnaire...

  1. Faire une liste de toutes les lettres que vous voulez possible dans vos mots
  2. Générer un index aléatoire pour choisir une lettre dans la liste
  3. Répétez jusqu'à ce que vous ayez la longueur de mot souhaitée

Répétez ces étapes pour le nombre de mots que vous souhaitez générer.

 1
Author: K.U., 2011-02-10 00:13:39

Vous pouvez appeler cette méthode pour chaque mot que vous souhaitez générer. Notez que la probabilité de générer des anagrammes devrait être relativement faible cependant.

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
Author: Argote, 2011-02-10 00:56:06

Pourquoi générer des mots aléatoires? Lorsque vous pouvez utiliser certains dictionnaires.

 1
Author: Yanick Rochon, 2018-07-20 01:12:10