Percursos
/
Go
Go
/
Programa
/
Aleatoriedade
Al

Aleatoriedade em Go

2 exercícios

Sobre Aleatoriedade

O pacote math/rand oferece suporte para gerar números pseudoaleatórios.

Vê como gerar um número inteiro aleatório entre 0 e 99:

import "math/rand"

n := rand.Intn(100) // n is a random int, 0 <= n < 100

A função rand.Float64 devolve um número de vírgula flutuante aleatório entre 0.0 e 1.0:

f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0

Há também suporte para baralhar um 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]
})

Sementes

As sequências de números geradas pelo pacote math/rand não são verdadeiramente aleatórias. Dada uma "semente" específica, os resultados são totalmente determinísticos.

No Go 1.20+, a semente é escolhida aleatoriamente, por isso vais ver uma sequência diferente de números aleatórios sempre que executas o teu programa.

Em versões anteriores do Go, a semente era 1 por omissão. Por isso, para obter sequências diferentes em várias execuções do programa, tinhas de definir manualmente a semente do gerador de números aleatórios, por exemplo com a hora atual, antes de obteres quaisquer números aleatórios.

rand.Seed(time.Now().UnixNano())
Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Aleatoriedade

A prática está bloqueada

Desbloqueia mais 2 exercícios para praticares Aleatoriedade