mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
1.1 KiB
1.1 KiB
Not So Random
Go's rand package makes it easy to generate all sorts of random numbers.
What they don't tell you though is that the default seed is 1. So if you
write a program like so:
package main
import "fmt"
import "math/rand"
func main() {
stuff := []string{
"one",
"two",
"three",
"four",
}
fmt.Println(stuff[rand.Intn(len(stuff))])
}
and then run it, you will get output like:
three
and any subsequent runs of the program will continue to produce three. Not
exactly what we are looking for.
If you want your program to be a little less predictable, you will want to
seed it yourself, perhaps with the current time, instead of 1. Try adding
the following to the beginning of the main function:
rand.Seed( time.Now().UTC().UnixNano())
You'll also want to import the time package.
Things should appear to be a bit more random now.
source: Jake Worth and Stackoverflow