package aliasmethod import ( "testing" "fmt" ) func Test_AliasMethod(t *testing.T) { var prizes = make(map[string]float64) prizes["圣诞老人"] = 0.05 prizes["圣诞树"] = 0.15 prizes["圣诞袜"] = 0.15 prizes["圣诞小鹿"] = 0.15 prizes["圣诞雪橇"] = 0.15 prizes["圣诞雪人"] = 0.15 prizes["谢谢参与"] = 0.2 var keys = make([]string, 0, len(prizes)) var values = make([]float64, 0, len(prizes)) for key, value := range prizes { keys = append(keys, key) values = append(values, value) } var results = make(map[string]int, len(values)) var aliasMethod, err = NewAliasMethod(values) if err != nil { fmt.Println(err) } for i:=0; i<500; i++ { var index = aliasMethod.Next() var key = keys[index] results[key] = results[key] + 1 } fmt.Println(results) }