你如何在Go中生成随机uint64?

前端之家收集整理的这篇文章主要介绍了你如何在Go中生成随机uint64?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Go的数学/随机库缺少一个生成64位数字的函数.这已经是 an open issue大约四年了.与此同时,变通方法是什么样的?
最简单的方法是拨打 rand.Uint32()两次:
func Uint64() uint64 {
    return uint64(rand.Uint32())<<32 + uint64(rand.Uint32())
}

另一种选择是调用rand.Read()(was added in Go 1.7)读取8个字节,然后使用encoding/binary包从中获取uint64值:

func Uint64() uint64 {
    buf := make([]byte,8)
    rand.Read(buf) // Always succeeds,no need to check error
    return binary.LittleEndian.Uint64(buf)
}

注意:作为rand.Read()的文档状态,它总是读取与传递的片的长度一样多的字节,并且它总是返回nil错误,因此在这种情况下不需要检查错误.

注意#2:您也可以使用binary.BigEndian而不是binary.LittleEndian,因为我们使用其所有字节生成随机数,字节顺序完全无关紧要.

原文链接:https://www.f2er.com/windows/364267.html

猜你在找的Windows相关文章