|
|
|
|
|
|
|
|
func ChoiceMap(ary map[string]int) (string, int) { |
|
|
func ChoiceMap(ary map[string]int) (string, int) { |
|
|
rand.Seed(time.Now().UnixNano()) |
|
|
rand.Seed(time.Now().UnixNano()) |
|
|
l := len(ary) |
|
|
l := len(ary) |
|
|
if l == 0 { |
|
|
|
|
|
return "", 0 |
|
|
|
|
|
|
|
|
keys := make([]string, 0, l) |
|
|
|
|
|
for k := range ary { |
|
|
|
|
|
keys = append(keys, k) |
|
|
} |
|
|
} |
|
|
// 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 |
|
|
|
|
|
|
|
|
sel := ChoiceStr(keys) |
|
|
|
|
|
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 |
|
|
|
|
|
// } |