私はブーストからUUIDを生成するためにこのコードを使用:「0xCC5B9F6946EF4448A89EDB2042E0B084」:boost :: uuids :: uuidを使って128/64ビット数に変換するには?
boost::uuids::random_generator gen;
boost::uuids::uuid uuidId = gen();
string randomUUID = boost::lexical_cast<std::string>(uuidId);
std::remove(randomUUID.begin(), randomUUID.end(), '-');
randomUUID = "0x" + randomUUID;
は、それは次のように私に16進数を示します。
私の質問は次のとおりです:この文字列(128ビット16進数)を128ビット長または64ビット長に変換するにはどうすればいいですか?
標準C atollとC++ std :: stollは、この場合はサポートしません。
UUIDは、ランダム生成の品質を優先します。
ありがとうございました!
乱数を生成するためにUUIDを使用することはひどい考えです。彼らはメルセントゥイスターのようなものを使って、同様に生成された乱数のエントロピーを得ていません。あなた自身の好意を持ち、C++標準ライブラリに組み込まれた機能を実際に使用して、乱数を生成します(http://stackoverflow.com/a/14009667/2331956)。また、UUIDの部分文字列を取ることは[普通の悪い考えです](https://blogs.msdn.microsoft.com/oldnewthing/20080627-00/?p=21823/) –
私はMersener Twisterを持っていて、私の場合はこのように見えます: –
私はMersener Twisterを持っていて、私の場合は次のようになります:auto const seed = std :: random_device()(); std :: mt19937 mt(seed); std :: uniform_int_distribution dist(12345678,99999999); long l1; long l2; (int i = 0; i <10; ++ i) { l1 = dist(mt); l2 = dist(mt); std :: cout << l1 << l2 << "\ n"; } 私はUUIDがより質の良い乱数を提供できると思います。 –