2倍平均数算法
package algo
import (
"errors"
"math/rand"
)
/**
2倍平均数算法
*/
func DoubleAverage(count, amount int64) (int64, error) {
if count == 1 {
return amount, nil
}
// 计算最大可调度金额
max := amount - count * MIN_MONEY
if max == 0 {
return 0, nil
}
if max < 0 {
return 0, errors.New("红包金额与个数不匹配")
}
// 计算均值
avg := max / count
// 计算2倍均值
avg *= 2
// 以2倍均值作为基数来随机红包
x := rand.Int63n(avg)
return x + MIN_MONEY, nil
}最后更新于