Avatar ·

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.