2011-03-05 29 views

Respuesta

23
Random r = new Random(); 
char c = (char) (r.nextInt(26) + 'a'); 
+0

Para otros rangos de caracteres, consulte http://www.asciitable.com/, luego http://www.unicode.org/charts/ –

+0

@Nishant, gracias, actualizado. –

4

Las letras, o más exactamente, los caracteres, son números (de 0 a 255 en ascii extendido, 0 a 127 en no extendido). Por ejemplo, en ASCII, 'A' (cita significa personaje, en lugar de cadena) es 65. Entonces 1 + 'A' le da 66 - 'B'. Entonces, puede tomar un número aleatorio del 0 al 26, agregarlo al carácter 'a', y aquí está: letra al azar.

También podría hacerlo con una cadena, escribiendo "abcdefghijklmnopqrstuvwxyz" y tomando una posición aleatoria en esta cadena, pero la solución de Barker es más elegante.

+0

Creo que el "elegir un carácter aleatorio de una cadena dada" es la solución más elegante. –

+0

Es más fácil de leer, pero tienes que crear la cadena :) – Raveline

3

versión alter de @ Michael Barker

Random r = new Random(); 
    int c = r.nextInt(26) + (byte)'a'; 
    System.out.println((char)c); 
+0

¿Por qué el molde a 'byte'? – aioobe

0

uso el valor ASCII de las letras para generar el número aleatorio.

0
Random r = new Random(); 
char symbel = (char)(r.nextInt(26) + 'a'); 
if(symbel>='a' && symbel <= 'z') { 
    System.out.println("Small Letter" + symbel); 
} else { 
    System.out.println("Not a letter" + symbel); 
} 
+1

¿por qué verificar si el carácter está fuera del rango 'a'-'z'? Eso nunca puede suceder. –

1
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; 
... 
randomAlphabetic(1).toLowerCase() 

esto le da una cadena con carácter individual

2
char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1)); 
0

Para seleccionar al azar una carta de (a- z) Me gustaría hacer lo siguiente:

Random rand = new Random(); 
... 
char c = rand.nextInt(26) + 'a'; 

Desde Random.nextInt() genera un valor de 0 a 25, solo necesita agregar un desplazamiento de 'a' para producir las letras minúsculas.

Cuestiones relacionadas