当前位置: 首页 > 面试题库 >

如何在Go中生成随机uint64?

宋勇
2023-03-14
问题内容

Go的math/random库缺少生成64位数字的功能。大约四年来这是一个未解决的问题。同时,解决方法是什么样的?


问题答案:

最简单的方法是拨打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,因为我们正在使用其所有字节生成一个随机数,所以字节顺序是完全不相关的。



 类似资料:
  • 问题内容: 在java中如何生成随机数? 问题答案: 在Java 1.7或更高版本中,执行此操作的标准方法如下: 请参阅相关的JavaDoc。这种方法的优点是不需要显式初始化java.util.Random实例,如果使用不当,可能会引起混乱和错误。 但是,相反,没有办法明确设置种子,因此在有用的情况下(例如测试或保存游戏状态或类似情况),很难重现结果。在这种情况下,可以使用下面显示的Java 1.

  • 每当我看到这行代码 后面总是有一个很长的序列号..这个数字是如何产生的?如果我想随机生成这个值,我该怎么做呢?谢谢你的帮助。

  • 我想用骰子做一个游戏,我需要在其中加入随机数(以模拟骰子的侧面。我知道如何在1到6之间进行)。使用 不能很好地工作,因为当我运行程序几次时,我得到的输出是: 所以我想要一个每次都会生成不同随机数的命令,而不是连续5次生成相同的随机数。是否有命令可以执行此操作?

  • 问题内容: 在Go语言中,我只需要一个随机的字符串(大写或小写),没有数字。最快和最简单的方法是什么? 问题答案: Paul的解决方案提供了一个 简单的 通用解决方案。 问题要求 “最快,最简单的方法” 。让我们也讨论 最快的 部分。我们将以迭代的方式得出最终的最快的代码。对每个迭代进行基准测试可以在答案的结尾处找到。 所有解决方案和基准代码都可以在GoPlayground上找到。Playgrou

  • 在Go中,我只想要一个随机的字符串(大写或小写),没有数字。最快和最简单的方法是什么?

  • 我对Java还是有点陌生,有一个实验室需要模拟一个彩票游戏,生成一个介于1到10之间的数字。它首先询问用户想要购买多少张彩票,然后询问他们是否希望计算机为他们生成猜测,如果是,则会生成猜测并显示中奖号码。如果用户说不,那么用户将自己输入猜测,并显示中奖号码。 我在弄清楚当有人输入是或否时如何执行代码时遇到了问题。我应该做一个do while循环吗? 这是我现在的代码。 以下是算法:1。获取购票数量