Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 在最小值和最大值之间生成随机uint64_Go_Random - Fatal编程技术网

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

Go 在最小值和最大值之间生成随机uint64,go,random,Go,Random,如何在Go中生成随机的64位无符号整数 首先我需要打电话 rand.Seed(0) 然后我需要一个函数,它返回一个带有以下签名的uint64 func random(min, max uint64) uint64 { } 上述函数应在 范围[最小值,最大值](包括最小值和最大值)我不知道你为什么被否决。我想您担心的是,max-min大于MaxInt64的情况,在这种情况下,rand.Int63n会像您所说的那样失败。我会单独处理那个案子 const maxInt64 uint64 = 1 &

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

首先我需要打电话

rand.Seed(0)
然后我需要一个函数,它返回一个带有以下签名的uint64

func random(min, max uint64) uint64 {
}
上述函数应在
范围[最小值,最大值](包括最小值和最大值)

我不知道你为什么被否决。我想您担心的是,
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
}
const maxInt64 uint64=1 n{
x=rand.Uint64()
}
返回x
}

@tkausl Int63n以int64的形式从默认源返回[0,n]中的非负伪随机数。如果n@gosom:将uint64转换为int64很简单,应该是不言而喻的。@gosom:为了将来的参考,这个问题如果不是用“这是我的要求,为我编写我的函数”。@Flimzy是的,这很简单,但它仍然不包括文档中的最大int。问题需要
[min,max]
,但
randomHelper
中的任何一种情况都不包括最大值。我想你需要这样的东西