12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package otherutils
- import (
- "fmt"
- "testing"
- )
- func TestRandChoiceByWeighted(t *testing.T) {
- items := [][]int64{
- {1, 1000},
- {2, 1000},
- {3, 500},
- {4, 10},
- }
- frequencies := make(map[int64]int64)
- for i := 0; i < 10000; i++ {
- selected := RandChoiceByWeighted(items)
- //fmt.Println(selected)
- frequencies[selected]++
- }
- fmt.Println("Frequencies of selection after 10000 trials:")
- for k, v := range frequencies {
- fmt.Printf("%d: %d\n", k, v)
- }
- }
- func TestRandOneNum(t *testing.T) {
- for i := 0; i < 10; i++ {
- got := RandOneNum(0, 5)
- fmt.Println(got)
- }
- }
- func TestWeightedTable_RandOneItem(t *testing.T) {
- items := [][]int64{
- {1, 1000},
- {2, 1000},
- {3, 500},
- {4, 0},
- {5, 0},
- }
- weightedTable := SetWeightedTable(items, func(item []int64) int64 {
- return item[1]
- })
- res := make(map[int64]int64)
- for i := 0; i < 100000; i++ {
- item, _ := weightedTable.RandOneItem(false)
- if _, ok := res[item[0]]; ok {
- res[item[0]]++
- } else {
- res[item[0]] = 1
- }
- }
- fmt.Println(res)
- var num int64
- for _, n := range res {
- num += n
- }
- fmt.Println(num)
- }
|