Avatar ·

Por que o código com strings aleatórias imprime "hello world"?

Olá a todos! Sou novo em Java e me deparei com um comportamento estranho. Escrevi o seguinte 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" ``` Eu esperava que, a cada execução, fossem impressas strings aleatórias. Mas esse código imprime consistentemente "hello" e "world" em máquinas diferentes. Por que isso acontece? É algum tipo de magia ou característica do Java? Reiniciei o programa várias vezes — o resultado é sempre o mesmo. Expliquem, por favor, como isso funciona. Desde já, obrigado! <<>>

Resposta curta: a seed (semente) do gerador de números aleatórios

A classe java.util.Random