Skip to content

Latest commit

 

History

History
46 lines (34 loc) · 1.08 KB

not-so-random.md

File metadata and controls

46 lines (34 loc) · 1.08 KB

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