發(fā)現(xiàn)二次均值算法有問題
const min = int64(1)
// 二倍均值算法
func DoubleAverage(count, amount int64) int64 {
if count == 1 {
return amount
}
// 計算出最大可用金額
max := amount - min*count
// 計算最大可用平均值
avg := max / count
// 二倍均值基礎在加上最小金額,防止出現(xiàn)0值
avg2 := 2*avg + min
// 隨機紅包金額序列元素,把二倍均值作為隨機的最大數(shù)
rand.Seed(time.Now().UnixNano())
x := rand.Int63n(avg2) + min
return x
}
func TestDoubleAverage(t *testing.T) {
num :=0
count, amount := int64(20), int64(100)
for i := int64(0); i < count; i++ {
x := DoubleAverage(count, amount)
fmt.Print(x, ",")
num+=? int(x)
}
fmt.Println()
fmt.Println(num)
}
測試返回值
=== RUN? ?TestDoubleAverage
2,13,4,2,4,8,7,12,12,1,
65