package main

import ( "fmt" "math/rand" "time" )

// 红包结构体 type RedEnvelope struct { TotalAmount float64 // 红包总金额 Num int // 红包个数 }

// 发红包函数 func SendRedEnvelope(re *RedEnvelope) []float64 { result := make([]float64, re.Num) // 存放结果的数组 leftAmount := re.TotalAmount // 剩余金额 leftNum := re.Num // 剩余红包个数 rand.Seed(time.Now().UnixNano()) // 设置随机种子,确保每次随机的结果不同

for i := 0; i < re.Num-1; i++ {
    // 随机分配红包金额
    amount := rand.Float64() * leftAmount / float64(leftNum)
    result[i] = amount
    leftAmount -= amount
    leftNum--
}
// 最后一个红包金额为剩余金额
result[re.Num-1] = leftAmount

return result

}

func main() { re := RedEnvelope{ TotalAmount: 100.0, Num: 10, } result := SendRedEnvelope(&re) fmt.Println(result) }

用go写一个红包算法

原文地址: http://www.cveoy.top/t/topic/uih 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录