Aleatorio alfabetico

3 respostas
C

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 ?

3 Respostas

faelcavalcanti

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.

ViniGodoy

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!

C

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);
	}
}
Criado 9 de março de 2007
Ultima resposta 9 de mar. de 2007
Respostas 3
Participantes 3