如何在Go中生成随机的64位无符号整数?
首先我要打电话
rand.Seed(0)
然后我需要一个返回带有以下签名的uint64的函数
func random(min, max uint64) uint64 {
}
上面的函数应在中返回一个随机的64位无符号整数
范围[最小,最大](包括最小和最大)
最佳答案
我不确定为什么你会被低估。我认为您担心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
}
关于go - 在最小和最大之间生成随机uint64,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47856543/