| "time" | "time" | ||||
| ) | ) | ||||
| // This doesn't work | |||||
| // func Choice(ary ...interface{}) interface{} { | |||||
| // rand.Seed(time.Now().UnixNano()) | |||||
| // l := len(ary) | |||||
| // return ary[rand.Intn(l)] | |||||
| // } | |||||
| func Debug(msg ...interface{}) { | func Debug(msg ...interface{}) { | ||||
| fmt.Println(msg) | fmt.Println(msg) | ||||
| } | } | ||||
| func ChoiceInt(ary []int) int { | func ChoiceInt(ary []int) int { | ||||
| rand.Seed(time.Now().UnixNano()) | |||||
| l := len(ary) | l := len(ary) | ||||
| return ary[rand.Intn(l)] | return ary[rand.Intn(l)] | ||||
| } | } | ||||
| func ChoiceStr(ary []string) string { | func ChoiceStr(ary []string) string { | ||||
| rand.Seed(time.Now().UnixNano()) | |||||
| l := len(ary) | l := len(ary) | ||||
| r := rand.Intn(l) | r := rand.Intn(l) | ||||
| // fmt.Printf("Selected %s (element %d)\n", ary[r], r) | // fmt.Printf("Selected %s (element %d)\n", ary[r], r) | ||||
| } | } | ||||
| func ChoiceMap(ary map[string]int) (string, int) { | func ChoiceMap(ary map[string]int) (string, int) { | ||||
| rand.Seed(time.Now().UnixNano()) | |||||
| l := len(ary) | l := len(ary) | ||||
| keys := make([]string, 0, l) | keys := make([]string, 0, l) | ||||
| for k := range ary { | for k := range ary { | ||||
| sel := ChoiceStr(keys) | sel := ChoiceStr(keys) | ||||
| return sel, ary[sel] | return sel, ary[sel] | ||||
| } | } | ||||
| // func ChoiceMap(ary map[string]int) (string, int) { | |||||
| // rand.Seed(time.Now().UnixNano()) | |||||
| // l := len(ary) | |||||
| // if l == 0 { | |||||
| // return "", 0 | |||||
| // } | |||||
| // // fmt.Println(l) | |||||
| // key, val, rot := "", 0, 0 | |||||
| // for key == "" { | |||||
| // // Debug(rot, key, val) | |||||
| // for k, v := range ary { | |||||
| // // Debug(k, v) | |||||
| // // Debug(rot) | |||||
| // r := 0 | |||||
| // if rot < 3 { | |||||
| // r = rand.Intn(l) | |||||
| // } | |||||
| // if r == 0 { | |||||
| // return k, v | |||||
| // } | |||||
| // } | |||||
| // rot++ | |||||
| // // fmt.Println(key, val) | |||||
| // } | |||||
| // return key, val | |||||
| // } |