gpt4 book ai didi

C++ : Seeding mt的低32位包含什么

转载 作者:行者123 更新时间:2023-11-28 02:25:05 26 4
gpt4 key购买 nike

我有一行代码使用高精度时钟的纳秒抓取来为 mersenne twister 伪随机数生成器播种。类似这样的事情:

rng.seed(duration_cast<nanoseconds>(high_resolution_clock::now().time_since_epoch().count());

我知道 boost 中的 mt 只能接受 32 位整数(这是 seed() 所接受的)并且这个转换为纳秒的持续时间至少是 64 位(我也知道这段代码会导致转换警告这可以通过 static_cast 来处理)。

我的问题是,当它转换为 32 位整数时,这些位的内容是什么。我知道低 32 位是编译器在从 64 位整数转换为 32 位整数时保留的内容。我也在一台小端机器上。因为我知道以秒为单位的当前纪元时间是 ~1.4*10^9,那些较低的 32 位会是纪元时间的前 ~10 位数字,还是因为这是小端字节序,它会是最后的随机乱码吗?

非常感谢任何阅读建议或要点。

最佳答案

字节顺序与它无关。 64 位值的“低”32 位是位 0-31,即值 1<<0 到 1<<31 的位。 IOW,低 32 位只是取值模 1<<32。

是的,对于一个时钟来说,这意味着采取快速变化的部分。

关于C++ : Seeding mt的低32位包含什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31027052/

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