Итак, моя цель - создать случайный генератор паролей длины n (n> = 5 & & n < = 15), который добавляет только два номера в случайных местах.Расчет процентного процента
(например 7S4js 86dJxD h6Zqs9K)
У меня это работает ... или я так хочу верить. Я хочу знать, будет ли мой код ВСЕГДА работать при определении того, нужно ли вводить число.
'newPassword': Возвращает строку длины 'len', используя номера nums.
std::string newPassword(int len, int nums)
{
std::string password = "";
// Required numbers
int req = nums;
for (int i = 0; i < len; i++)
{
bool needNum = req > 0;
bool chance = rand() % len > req;
bool useNum = needNum && chance;
if (useNum)
req--;
char c = nextChar(useNum);
password += c;
}
return password;
}
'nextChar': Возвращает случайный символ. Символ будет числом, если «isNum» истинно.
char nextChar(bool isNum)
{
char c;
if (!isNum)
{
// 50% chance to decide upper or lower case
if (rand() % 100 < 50)
{
c = 'a' + rand() % 26;
}
else
{
c = 'A' + rand() % 26;
}
}
else
{
// Random number 0-9
c = '0' + rand() % 10;
}
return c;
}
Так что, будет ли переменная 'шанс' в 'newPassword' работать все время?