#include <iostream>
#include <string>
#include <random>
// 生成指定长度的随机字符串,包含随机数量的数字和字母
std::string generateKey(int length)
{
// 构造随机数生成器
std::random_device rd; // 随机数种子
std::mt19937 gen(rd()); // 随机数生成器
std::uniform_int_distribution<> dis_num(0, 9); // 数字范围
std::uniform_int_distribution<> dis_char(0, 25); // 字母范围
// 生成随机字符串
std::string key;
int num_count = 0; // 记录已经生成的数字数量
int char_count = 0; // 记录已经生成的字母数量
for (int i = 0; i < length; i++) {
if (num_count < length / 2 && (dis_char(gen) % 2 == 0 || char_count >= length / 2)) {
// 如果数字数量小于总长度的一半,并且当前随机到的数是偶数,或者字母数量已经达到总长度的一半,则生成一个数字
key += std::to_string(dis_num(gen)); // 生成数字,并将其转换为字符串
num_count++; // 数字数量加一
} else {
// 否则,生成一个字母
key += static_cast<char>('a' + dis_char(gen)); // 生成字母,并将其转换为字符类型
char_count++; // 字母数量加一
}
}
return key;
}
int main() {
std::string key = generateKey(16); // 生成长度为 16 的随机字符串
std::cout << "Randomly generated key: " << key << std::endl; // 输出生成的随机字符串
return 0;
}