生成128位(uint128_t)随机在C ++通过升压::随机(Generate 128 bit(

2019-09-27 17:50发布

如何通过生成的boost ::随机在C 128位数++。 我已阅读官方文档。 所述uniform_int_distribution只能生成64位(INT的长度)。 提前致谢。

Answer 1:

作为戈峻说,你可以在两个64位整数合并成一个128位的整数。 在C ++规范不包括128个整数,所以你需要找到另一种方式。 也许你的编译器有这些东西。 你使用boost ::随机,所以我认为你可以使用boost ::多倍。

#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;

int128_t int64left = CreateRandomInt64ViaBoost()
int128_t int64right = CreateRandomInt64ViaBoost()

int128_t randomInt = int64left << 64 | int64right;

针对您的意见一个更早版本:是的,这是一个完全随机的128位的int,你刚才生成的两个步骤。



文章来源: Generate 128 bit(uint128_t) randomly in c++ via boost::random
标签: c++ boost random