La génération aléatoire des mots en Java?
J'ai écrit un programme qui permet de 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;
}
(method stub)
Je veux juste minuscules mots de longueur 1 à 10. J'ai lu quelque chose à propos de la génération de nombres aléatoires, puis la conversion en char ou quelque chose, mais je n'ai pas totalement comprendre. Si quelqu'un peut me montrer comment générer des mots au hasard, puis j'ai devriez être facilement en mesure d'utiliser une boucle for pour insérer les mots dans le tableau. Merci!
aléatoire des mots en fonction de quelle source? (par exemple, des nombres aléatoires + ???? = mots au hasard)
Devoir à la maison?
Devoir à la maison?
OriginalL'auteur Mr_CryptoPrime | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
Avez-vous besoin réel des mots anglais, ou tout simplement au hasard des chaînes qui ne contiennent que des lettres de a à z?
Si vous avez besoin réel des mots anglais, la seule façon de le faire est d'utiliser un dictionnaire, et de sélectionner des mots au hasard.
Si vous n'avez pas besoin de mots anglais, alors quelque chose comme cela va faire:
Non, vous n'avez pas besoin de jeter
'a'
àchar
, mais le résultat de l'addition (puisque celui-ci est automatiquementint
). Il devrait donc être en faitword[j] = (char)('a' + random.nextInt(26));
Merci pour la correction, il a été un moment depuis que j'ai travaillé avec des caractères en Java.
Haha, pas de problème...il a pris comme 10secs à corriger.
OriginalL'auteur David Yaw
RandomStringUtils de commons-lang
Nouveau lien, plus mort.
OriginalL'auteur Aravind R. Yarram
Si vous voulez générer des mots d'une longueur donnée, vous aurez besoin d'un algorithme permettant de déterminer si une chaîne est un mot (dur), ou l'accès à un mot de la liste de tous les mots dans une langue donnée (facile). Si cela peut aider, voici une liste de tous les mots dans le dictionnaire du Scrabble.
Une fois que vous avez une liste de tous les mots dans une langue, vous pouvez charger ces mots dans un
ArrayList
ou autre structure linéaire. Vous pouvez ensuite générer un hasard de l'indice dans la liste pour obtenir le mot au hasard.OriginalL'auteur templatetypedef
Si vous voulez des mots au hasard, sans l'aide d'un dictionnaire...
Répétez ces étapes pour le nombre de mots que vous voulez générer.
OriginalL'auteur K.U.
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 doit être relativement faible.
StringBuilder
au lieu de faireout += ...
Ne serait pas le compilateur d'optimiser son algorithme à utiliser StringBuilder?
Je suis assez sûr qu'il ne serait pas obtenir optimisé.
Vous êtes correct. Depuis la Chaîne concat est dans une boucle, le compilateur ne pas optimiser les opérations en boucle. Le compilateur va essayer d'optimiser trivial Chaîne concats. Source stackoverflow.com/questions/1532461/...
U., @Willi: Le compilateur utilise le StringBuilder, mais il crée pour chaque
+=
un nouveau. Cette ligne s'occupe de la compilation comme ceci:out = new StringBuilder().append(out).append(r.nextInt('z'-'a')+'a').toString();
– Par la voie, vous devez ici convertir en char à nouveau, puisque int + char = int, et donc la boucle va ajouter des nombres décimaux à l'objet StringBuilder.OriginalL'auteur Argote
Pourquoi la génération aléatoire de mots? Lorsque vous pouvez utiliser certains dictionnaires.
vous devriez avoir précisé que, et marqué votre question "à la maison"
Oh, désolé, je ne savais même pas que c'était une catégorie, mais je suppose que ce serait tout à fait logique. Je ne manquerai pas de le faire la prochaine fois.
le lien était mort..
Fixe. Je vous remercie.
OriginalL'auteur Yanick Rochon