aliasmethod_test.go 809 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package aliasmethod
  2. import (
  3. "testing"
  4. "fmt"
  5. )
  6. func Test_AliasMethod(t *testing.T) {
  7. var prizes = make(map[string]float64)
  8. prizes["圣诞老人"] = 0.05
  9. prizes["圣诞树"] = 0.15
  10. prizes["圣诞袜"] = 0.15
  11. prizes["圣诞小鹿"] = 0.15
  12. prizes["圣诞雪橇"] = 0.15
  13. prizes["圣诞雪人"] = 0.15
  14. prizes["谢谢参与"] = 0.2
  15. var keys = make([]string, 0, len(prizes))
  16. var values = make([]float64, 0, len(prizes))
  17. for key, value := range prizes {
  18. keys = append(keys, key)
  19. values = append(values, value)
  20. }
  21. var results = make(map[string]int, len(values))
  22. var aliasMethod, err = NewAliasMethod(values)
  23. if err != nil {
  24. fmt.Println(err)
  25. }
  26. for i:=0; i<500; i++ {
  27. var index = aliasMethod.Next()
  28. var key = keys[index]
  29. results[key] = results[key] + 1
  30. }
  31. fmt.Println(results)
  32. }