如何在Go?
中生成随机64位无符号整数首先,我需要致电
rand.Seed(0)
然后我需要一个函数返回带有以下签名的uint64
func random(min, max uint64) uint64 {
}
上面的函数应该返回一个随机的64位无符号整数 范围[min,max](包括最小值和最大值)
答案 0 :(得分:1)
我不确定你为什么被投票。我认为您担心max - min
大于MaxInt64的情况,在这种情况下rand.Int63n
会因为您的评论而失败。我会单独处理这个案子。
const maxInt64 uint64 = 1 << 63 - 1
func random(min, max uint64) uint64 {
return randomHelper(max - min) + min
}
func randomHelper(n uint64) uint64 {
if n < maxInt64 {
return uint64(rand.Int63n(int64(n+1)))
}
x := rand.Uint64()
for x > n {
x = rand.Uint64()
}
return x
}