Aleatorio alfabetico

Olá Pessoal,

construi uma função em JavaScript para retornar uma sequecia de 5 letras aleatoriamente. Gostaria de saber se algum colega tem essa mesma função JAVA ?

Caso seja para criptografia, uma idéia seria utilizar um algoritimo que se baseia na tabela em unicode de forma diferenciada para cada locale, caso você venha utilizando, ou seja, a aplicação, identifica o tipo de locale do usuário e utiliza-o para realizar a formação de caracteres aleatórios de acordo com uma lógica qualquer.

Curiosa a sua pergunta… eu montei essa função aqui:

public String textoAleatorio(int numLetras) {
   Random random = new Random();
   StringBuilder sb = new StringBuilder(numLetras);
   for (int i = 0; i &lt numLetras; i++)
      sb.append((char)(random.nextInt(26) + 65));
   return sb.toString();            
}

Só algumas dicas, conforme mostra o item 30 do capítulo 7, do livro Effective Java, o método Math.random não é a melhor alternativa para números aleatórios, no caso do Java. Prefira usar a classe Random, como demonstrado nesse meu exemplinho. :wink:

Outra coisa é quanto a concatenação de strings. Geralmente é uma boa idéia usar um StringBuilder (ou em versões mais antigas do Java um StringBuffer) para fazer concatenações. Ainda nesse capítulo do livro, o autor fala sobre isso no item 33. A concatenação com o operador + é extremamente lenta (para um texto de 800 caracteres, 9 vezes mais lenta, mas essa demora cresce numa taxa exponencial).

Só para você ter uma idéia, usar esse tipo de prática num loop chega a gerar problemas reais de performance, alguns dos quais até já detectei num profiler!

Na verdade, esse livro é recheado de pequenas e importantes dicas. Eu recomendo mesmo é que você leia ele inteiro! :slight_smile: Eu mesmo comprei e estou muito satisfeito!

Olá ViniGodoy,
eu ainda não tenho nada de experiência em Java, comecei estudar Java no inicio deste ano. A pensar de programar a mais de 15 anos entras linguagem Java ainda é ministério para mim desvendar.
Com isso agradeço muito a sua resposta.

Segue abaixo para os menos experientes como eu:

package br.com.conpro.Temporario;
import java.util.Random;
public class Ale {
	public String textoAleatorio(int numLetras) {
	    Random random = new Random();
	    StringBuilder sb = new StringBuilder(numLetras);
	    for (int i = 0; i &lt numLetras; i++)
	       sb.append((char)(random.nextInt(26) + 65));
	    return sb.toString();            
	 }
}
package br.com.conpro.Temporario;
import br.com.conpro.funcoesgeiser.UnicoCodigo;
public class Teste {
	public static void main(String[] args) {
		Ale ale = new Ale();
		String x = ale.textoAleatorio(15);
		System.out.println(x);
	}
}