cpp
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
#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; }