29 lines
594 B
C++
29 lines
594 B
C++
#pragma once
|
|
|
|
#include <iostream>
|
|
#include <random>
|
|
|
|
namespace ofxVariableLab {
|
|
|
|
/// \brief create pseudo-random id
|
|
static std::string random_id(std::size_t len = 24){
|
|
static const std::string_view hex_chars = "0123456789abcdef";
|
|
using Generator = std::mt19937;
|
|
|
|
Generator gen{std::random_device{}()};
|
|
|
|
std::string uuid;
|
|
uuid.reserve(len);
|
|
|
|
while(uuid.size() < len){
|
|
auto n = gen();
|
|
for(auto i = Generator::max(); i & 0x8 && uuid.size() < len; i >>= 4){
|
|
uuid += hex_chars[n & 0xf];
|
|
n >>= 4;
|
|
}
|
|
}
|
|
|
|
return uuid;
|
|
}
|
|
|
|
}
|