Avatar ·

¿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