¿Por qué el código con cadenas aleatorias imprime "hello world"?
¡Hola a todos! Soy nuevo en Java y me encontré con un comportamiento extraño. Escribí este código:
```java
Random random = new Random(-229985452);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append((char) ('a' + random.nextInt(26)));
}
System.out.println(sb.toString()); // Imprime "hello"
Random random2 = new Random(-147909649);
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb2.append((char) ('a' + random2.nextInt(26)));
}
System.out.println(sb2.toString()); // Imprime "world"
```
Esperaba que en cada ejecución se imprimieran cadenas aleatorias. Pero este código imprime consistentemente "hello" y "world" en diferentes máquinas. ¿Por qué sucede esto? ¿Es magia o una característica de Java? Reinicié el programa muchas veces y el resultado siempre es el mismo. Por favor, explíquenme cómo funciona. ¡Gracias de antemano!
<<>>
Respuesta corta: la semilla del generador de números aleatorios
La clase java.util.Random