最简单的方法是拨打
rand.Uint32()两次:
func Uint64() uint64 { return uint64(rand.Uint32())<<32 + uint64(rand.Uint32())}另一个选择是调用
rand.Read()(在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,因为我们正在使用其所有字节生成一个随机数,所以字节顺序是完全不相关的。



