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