#include<string>
#include<mutex>
std::string gen_random_string(int length)
{
static const char char_space[] =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
static std::once_flag once;
static const size_t len = strlen(char_space);
static const int rand_max = RAND_MAX - (RAND_MAX % len);
std::call_once(once, []() {
std::srand(static_cast<unsigned int>(time(nullptr)));
});
std::string str;
str.resize(length);
for (int i = 0; i < length; ++i){
int x = std::rand();
while (x >= rand_max){
x = std::rand();
}
x = (x % len);
str[i] = char_space[x];
}
return str;
}
//改进版的随机生成字符串函数
std::string gen_random_string(int length)
{
static const char char_space[] =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
static std::once_flag once;
static const size_t len = strlen(char_space);
static std::mt19937 rng;
std::uniform_int_distribution<std::mt19937::result_type> distace(0, len -1);
std::call_once(once, [&]() {
rng.seed(std::random_device()());
});
std::string str;
str.resize(length);
for (int i = 0; i < length; ++i){
int x = distace(rng);
x = (x % len);
str[i] = char_space[x];
}
return str;
}