每次随机金额都一样! 问题是不是理解错了。
后面老师说了!!!问题作废
// 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
}