C++ 生成随机字母 string bolsa_letras::letters_生成器(整数数量){ int已生成=0; map aux=值; 串出; while(已生成!=数量){ char-generated_char='A'+rand()%26; 如果(辅助[生成的字符]>0){ out.push_back(生成的_char); aux[生成的字符]--; 已经生成了++; } } 返回; }
上面是给定数字生成随机字母的代码 地图保存字母和字母出现的时间。问题是每次我运行代码时,它都会打印相同的:NLRBBMQH。为什么会这样C++ 生成随机字母 string bolsa_letras::letters_生成器(整数数量){ int已生成=0; map aux=值; 串出; while(已生成!=数量){ char-generated_char='A'+rand()%26; 如果(辅助[生成的字符]>0){ out.push_back(生成的_char); aux[生成的字符]--; 已经生成了++; } } 返回; },c++,random,C++,Random,上面是给定数字生成随机字母的代码 地图保存字母和字母出现的时间。问题是每次我运行代码时,它都会打印相同的:NLRBBMQH。为什么会这样 我将cstdlib包含在rand函数中。确定性程序无法自然生成随机性。我们需要从其他地方获得这种随机性。在以前的中,我们通常使用的结果是在每次运行时产生不同的状态 如今,我们使用的工具“更随机” 从中可以找到int类型整数的示例。现在,char也是一种整数类型。让我们稍微调整一下他们的例子: string bolsa_letras::letters_gener
我将cstdlib包含在rand函数中。确定性程序无法自然生成随机性。我们需要从其他地方获得这种随机性。在以前的中,我们通常使用的结果是在每次运行时产生不同的状态 如今,我们使用的工具“更随机” 从中可以找到
int
类型整数的示例。现在,char
也是一种整数类型。让我们稍微调整一下他们的例子:
string bolsa_letras::letters_generator(int quantity){
int already_generated = 0;
map<char, int> aux = values;
string out;
while(already_generated != quantity){
char generated_char = 'A' + rand()%26;
if(aux[generated_char] > 0){
out.push_back(generated_char);
aux[generated_char]--;
already_generated++;
}
}
return out;
}
#包括
#包括
int main()
{
std::random_device rd;//将用于获取随机数引擎的种子
std::mt19937 gen(rd());//标准mersenne_捻线机_引擎,带rd()种子)
标准:均匀分布图('A','Z');
对于(int n=0;n确定性程序不能自然地生成随机性。我们需要从其他地方获得这种随机性。在以前,我们通常使用的结果是在每次运行时生成不同的状态
如今,我们使用的工具“更随机”
从中可以找到类型为int
的整数的示例。现在,char
也是整数类型。让我们稍微调整一下他们的示例:
string bolsa_letras::letters_generator(int quantity){
int already_generated = 0;
map<char, int> aux = values;
string out;
while(already_generated != quantity){
char generated_char = 'A' + rand()%26;
if(aux[generated_char] > 0){
out.push_back(generated_char);
aux[generated_char]--;
already_generated++;
}
}
return out;
}
#包括
#包括
int main()
{
std::random_device rd;//将用于获取随机数引擎的种子
std::mt19937 gen(rd());//标准mersenne_捻线机_引擎,带rd()种子)
标准:均匀分布图('A','Z');
对于(int n=0;您需要为PRNG设定种子。使用srand
。不要使用rand()
。使用@Fureeish谢谢您的回答您需要为PRNG设定种子。使用srand
。不要使用rand()
。使用@Fureeish谢谢您的回答