计算概率百分比
Calculating percent chance
所以我的目标是创建一个长度为n (n>= 5)的随机密码生成器&&N <= 15),只在随机位置加两个数字。
(如。
我有这个工作…至少我是这么想的。我想知道的是,我的代码是否总是在确定是否应该插入一个数字时工作。
'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'工作所有的时间?
rand()
是一种过时且糟糕的生成随机数的方法。c++11 <random>
头提供了更高质量的设施来处理各种随机的东西。
你选择字母或数字的方式并不总是有效的。我会用另一种方式来处理它:生成所需数量的字母和数字,然后对字符串进行洗牌。这可能不是最有效的方法,但考虑到您对密码长度的要求,我更重视代码的清晰度。
#include <string>
#include <random>
#include <algorithm>
std::string generatePassword(int length, int nDigits)
{
std::string password;
password.resize(length);
std::mt19937 generator{std::random_device{}()};
// Generate capital/lowercase letters
std::uniform_int_distribution<char> letterGen(0, 2 * 26 - 1);
auto digitsBeginIter = std::generate_n(password.begin(), length - nDigits,
[&letterGen, &generator]() {
auto l = letterGen(generator);
return l < 26 ? 'a' + l : 'A' + (l - 26);
});
// Generate the digits
std::uniform_int_distribution<char> digitGen('0', '9');
std::generate_n(digitsBeginIter, nDigits,
[&digitGen, &generator]() { return digitGen(generator); });
// Shuffle the string
std::shuffle(password.begin(), password.end(), generator);
return password;
}
相关文章:
- 如何根据单词在文本中出现的概率输出单词
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 获取 2 个数字之间的差异百分比
- CNTK:如何在C++-API中获取类概率?
- 在一定范围内生成随机数,其中一定百分比为特定值
- 获得所需的最小射门次数,以便进球数超过射门数是给定的百分比
- 如何计算单个元素在向量<float>中所有元素之和中的百分比
- c++在循环中定义一组概率分布
- 如何在AMD视频卡上获得GPU负载百分比和GPU温度
- 关于骰子概率计算的一个C++问题
- 关于骰子概率和 2D 数组的问题
- 生成具有给定概率的随机数(C++)
- 概率和随机数
- 如何创建一个具有输出 z 分数的概率输入的函数?(C++)
- 在静脉中成功接受的概率
- 使用代码接近概率的近似值
- C++中的类/函数模板占用了我的二进制文件的百分比是多少?
- 如何读取uniform_int_distribution的概率质量函数?
- C++:计算每次迭代期间的概率百分比
- 计算概率百分比