21 const char letters[28] =
"qwertzuiopasdfghjklyxcvbnm";
22 const char capitalLetters[28] =
"QWERTZUIOPASDFGHJKLYXCVBNM";
23 const char numbers[11] =
"1234567890";
24 const char symbols[24] =
"!\"$%&/()=?'#*+~-_><.:,;";
32 bool useSmallLetters,
bool useCapitalLetters,
bool useNumbers,
bool useSymbols,
bool useAtLeastOneOfEachCategory)
37 signed char categoryCount = 0;
38 bool needSmallLetter =
false;
39 bool needCapitalLetter =
false;
40 bool needNumber =
false;
41 bool needSymbol =
false;
42 if (useSmallLetters) {
43 needSmallLetter = useAtLeastOneOfEachCategory;
46 if (useCapitalLetters) {
47 needCapitalLetter = useAtLeastOneOfEachCategory;
51 needNumber = useAtLeastOneOfEachCategory;
55 needSymbol = useAtLeastOneOfEachCategory;
58 signed char neededCharacters = useAtLeastOneOfEachCategory ? categoryCount : 0;
63 for (
char *
i = result, *end = result + length;
i < end; ++
i) {
65 if ((neededCharacters > 0 && (randomizer() < (highestRandomNumber / 2.0))) || ((end -
i) >= neededCharacters)) {
68 if (needCapitalLetter && ((category == -1) || (randomizer() < (highestRandomNumber / 2.0))))
70 if (needNumber && ((category == -1) || (randomizer() < (highestRandomNumber / 4.0))))
72 if (needSymbol && ((category == -1) || (randomizer() < (highestRandomNumber / 8.0))))
77 if (useCapitalLetters && ((category == -1) || (randomizer() < (highestRandomNumber / 2.0))))
79 if (useNumbers && ((category == -1) || (randomizer() < (highestRandomNumber / 4.0))))
81 if (useSymbols && ((category == -1) || (randomizer() < (highestRandomNumber / 8.0))))
86 *
i = letters[rand() % 26];
87 if (needSmallLetter) {
88 needSmallLetter =
false;
93 *
i = capitalLetters[rand() % 26];
94 if (needCapitalLetter) {
95 needCapitalLetter =
false;
100 *
i = numbers[rand() % 9];
107 *
i = symbols[rand() % 22];
122 bool useSymbols,
bool useAtLeastOneOfEachCategory)
125 result, length, rand, RAND_MAX, useSmallLetters, useCapitalLetters, useNumbers, useSymbols, useAtLeastOneOfEachCategory);
CPP_UTILITIES_EXPORT void generateRandomCharacterSequence(char *result, unsigned int length, bool useSmallLetters=true, bool useCapitalLetters=true, bool useNumbers=true, bool useSymbols=true, bool useAtLeastOneOfEachCategory=true)
Generates a random character sequence using std::rand().
Contains utility functions for generating random character sequences.