我有一行代码使用高精度时钟的纳秒抓取来播种 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 位数字,还是因为这是小端序,所以最后会是随机的乱码吗?
非常感谢任何建议或阅读要点。