Randomize Strings

Run Settings
LanguageGo
Language Version
Run Command
package main import ( "fmt" "math/rand" "time" ) func debug(list []string, randFn func([]string) []string) { t := time.Now() out := randFn(list) // debugging stuff d := time.Since(t) ns := d.Seconds() for _, v := range out { fmt.Println(v) } fmt.Println("--------------------------") fmt.Printf("took %fms to run\n", ns*1e3) // milliseconds fmt.Println("--------------------------") } func randomize(list []string) []string { ln := len(list) // size hinting greatly improves map insert performance randomized := make(map[int]int, ln) // randomize the list... for i := 0; i < ln; i++ { r := rand.Intn(ln) _, ok := randomized[r]; for ok { r = rand.Intn(ln) _, ok = randomized[r] } randomized[r] = r } // pull the map values out into a slice... out := []string{} for _, v := range randomized { out = append(out, list[v]) } return out } func main() { rand.Seed(time.Now().UnixNano()) available_ads := []string{"capital one", "ford", "mcdonalds", "zappos"} debug(available_ads, randomize) debug(available_ads, randomize) debug(available_ads, randomize) debug(available_ads, randomize) }
Editor Settings
Theme
Key bindings
Full width
Lines