课程
下载APP
源自:-

发现二次均值算法有问题

https://img1.mukewang.com/5ce174270001114d25801552.jpg


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


提问者:November11 2019-05-19 23:16

0个回答