O pacote math/rand oferece suporte para gerar números pseudoaleatórios.
Veja como gerar um número inteiro aleatório entre 0 e 99:
n := rand.Intn(100) // n is a random int, 0 <= n < 100
A função rand.Float64 retorna um número de ponto flutuante aleatório entre 0.0 e 1.0:
f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0
Também há suporte para embaralhar uma slice (ou outras estruturas de dados):
x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
x[i], x[j] = x[j], x[i]
})
As sequências de números geradas pelo pacote math/rand não são verdadeiramente aleatórias.
Dado um valor de "semente" específico, os resultados são totalmente determinísticos.
No Go 1.20+, a semente é escolhida automaticamente de forma aleatória, então você verá uma sequência diferente de números aleatórios cada vez que rodar seu programa.
Em versões anteriores do Go, a semente era 1 por padrão.
Então, para obter sequências diferentes em várias execuções do programa, você precisava definir manualmente a semente do gerador de números aleatórios, por exemplo, com a hora atual, antes de obter qualquer número aleatório.
rand.Seed(time.Now().UnixNano())
Elaine está trabalhando em um novo jogo infantil que tem animais e varinhas mágicas. Chegou a hora de programar funções para rolar um dado, gerar energia de varinha aleatória e embaralhar um slice.
Implemente uma função RollADie.
Esse será o tradicional dado de vinte lados, com números de 1 a 20.
d := RollADie() // d will be assigned a random int, 1 <= d <= 20
Implemente uma função GenerateWandEnergy.
A energia da varinha deve ser um número de ponto flutuante aleatório maior ou igual a 0.0 e menor que 12.0.
f := GenerateWandEnergy() // f will be assigned a random float64, 0.0 <= f < 12.0
O jogo tem oito animais diferentes:
Escreva uma função ShuffleAnimals que retorna um slice com os oito animais em ordem aleatória.
Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.