Como inicializar corretamente o gerador de números aleatórios em Go?
Olá! Sou novo em Go e estou tentando entender a geração de números aleatórios. Li que existe o pacote `math/rand` em Go, mas tive um problema: toda vez que executo o programa, obtenho a mesma sequência de números.
Aqui está meu código:
```go
package main
import (
"fmt"
"math/rand"
)
func main() {
for i := 0; i < 5; i++ {
fmt.Println(rand.Intn(100))
}
}
```
A cada execução, a saída é sempre a mesma: `81, 87, 47, 59, 81`. Eu esperava que os números mudassem. Ouvi dizer que é necessário "seed" (inicializar) o gerador, mas não entendo como fazer isso corretamente.
Quando tento usar `rand.Seed(time.Now().UnixNano())`, recebo um aviso do linter de que Seed está obsoleto no Go 1.20. Como inicializar corretamente o gerador nas versões modernas do Go? Existe diferença entre `math/rand` e `crypto/rand`? Qual abordagem é considerada correta para tarefas comuns (não criptográficas)?
Ficarei grato por uma explicação detalhada com exemplos.