Better UUID randomness
This commit is contained in:
parent
448290bee4
commit
10f494eefe
|
@ -5,6 +5,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
#include <random>
|
||||||
#include "boost/optional.hpp"
|
#include "boost/optional.hpp"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "common/swap.h"
|
#include "common/swap.h"
|
||||||
|
@ -38,8 +39,12 @@ struct UUID {
|
||||||
|
|
||||||
// TODO(ogniK): Properly generate uuids based on RFC-4122
|
// TODO(ogniK): Properly generate uuids based on RFC-4122
|
||||||
const UUID& Generate() {
|
const UUID& Generate() {
|
||||||
uuid[0] = (static_cast<u64>(std::rand()) << 32) | std::rand();
|
std::random_device device;
|
||||||
uuid[1] = (static_cast<u64>(std::rand()) << 32) | std::rand();
|
std::mt19937 gen(device());
|
||||||
|
std::uniform_int_distribution<uint64_t> distribution(1,
|
||||||
|
std::numeric_limits<uint64_t>::max());
|
||||||
|
uuid[0] = distribution(gen);
|
||||||
|
uuid[1] = distribution(gen);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue