gpt4 book ai didi

go - 在最小值和最大值之间生成随机 uint64

转载 作者:数据小太阳 更新时间:2023-10-29 03:41:04 25 4
gpt4 key购买 nike

我如何在 Go 中生成一个随机的 64 位无符号整数?

首先我需要打电话

rand.Seed(0)

然后我需要一个返回具有以下签名的 uint64 的函数

func random(min, max uint64) uint64 {
}

上面的函数应该返回一个随机的 64 位无符号整数range [min, max](包括最小值和最大值)

最佳答案

我不确定您为什么被否决。我认为您担心 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com