每次随机金额都一样! 问题是不是理解错了。
后面老师说了!!!问题作废 // double_average_test.go package algo import ( "fmt" "testing" ) func TestDoubleAverage(t *testing.T) { sum := int64(0) count, amount := int64(10), int64(100*100) for i := int64(0); i < count; i++ { x := DoubleAverage(count - i, amount) //每次人减少 amount -= x //每次红包减少 fmt.Println(x) sum += x } fmt.Println("--总计结束--") fmt.Println(sum) }
代码
//double_average.go package algo import ( "math/rand" "time" ) func init() { rand.Seed(time.Now().UnixNano()) //这里保证启动的时候随机 } const min = int64(1) func DoubleAverage(count, amount int64) int64 { if count == 1 { return amount } // 计算出最大可用金额 max := amount - min*count // 计算最大可用的平均值 avg := max / count // 计算2倍均值 avg2 := avg * 2 + min // 随机红包序列, 把二倍均值作为随机数的最大数 x := rand.Int63n(avg2) + min return x }