发现二次均值算法有问题
const min = int64(1)
// 二倍均值算法
func DoubleAverage(count, amount int64) int64 {
if count == 1 {
return amount
}
// 计算出最大可用金额
max := amount - min*count
// 计算最大可用平均值
avg := max / count
// 二倍均值基础在加上最小金额,防止出现0值
avg2 := 2*avg + min
// 随机红包金额序列元素,把二倍均值作为随机的最大数
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