golang红包算法
生活随笔
收集整理的這篇文章主要介紹了
golang红包算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import ("fmt""math/rand""time"
)func main() {//初始10個紅包, 10000元錢count, amount := int64(10), int64(10000)//剩余金額remain := amount//驗證紅包算法的總金額,最后sum應該==amountsum := int64(0)//進行發紅包for i := int64(0); i < count; i++ {x := DoubleAverage(count-i, remain)//金額減去remain -= x//發了多少錢sum += x//金額轉成元fmt.Println(i+1, "=", float64(x)/float64(100))}fmt.Println()fmt.Println("總和 ", sum)
}//二倍均值算法,count剩余個數,amount剩余金額
func DoubleAverage(count, amount int64) int64 {//最小錢min := int64(1)if count == 1 {//返回剩余金額return amount}//計算最大可用金額,min最小是1分錢,減去的min,下面會加上,避免出現0分錢max := amount - min*count//計算最大可用平均值avg := max / count//二倍均值基礎加上最小金額,防止0出現,作為上限avg2 := 2*avg + min//隨機紅包金額序列元素,把二倍均值作為隨機的最大數rand.Seed(time.Now().UnixNano())//加min是為了避免出現0值,上面也減去了minx := rand.Int63n(avg2) + minreturn x
}
總結
以上是生活随笔為你收集整理的golang红包算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协程和纤程
- 下一篇: golang逃逸分析