C++ 我想生成n个随机密码,但它总是显示相同的密码
我想生成n个随机密码,其中包含3个大写字母、3个小写字母和2个数字。我使用此函数生成了一个包含3个大写字母和3个小写字母的密码,当我输入n时,它始终显示相同的密码:这是我的代码:C++ 我想生成n个随机密码,但它总是显示相同的密码,c++,C++,我想生成n个随机密码,其中包含3个大写字母、3个小写字母和2个数字。我使用此函数生成了一个包含3个大写字母和3个小写字母的密码,当我输入n时,它始终显示相同的密码:这是我的代码: #include <iostream> #include <string> #include <cstdlib> #include <ctime> using namespace std; void generatepassword() { srand(time(
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
void generatepassword()
{
srand(time(NULL));
char a,b,c,d,e,f,g;
a = static_cast <char>(rand () % 26 + 65);
b = static_cast <char>(rand () % 26 + 65);
c = static_cast <char>(rand () % 26 + 65);
d = static_cast <char>(rand () % 26 + 97);
e = static_cast <char>(rand () % 26 + 97);
f = static_cast <char>(rand () % 26 + 97);
cout<<a<<b<<c<<d<<e<<f<<g<<endl;
}
int main()
{
int n;
cin>>n;
for (int i=1;i<=n;i++)
{
generatepassword();
}
return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
void generatepassword()
{
srand(时间(空));
字符a、b、c、d、e、f、g;
a=静态施法(兰特()%26+65);
b=静态施法(兰特()%26+65);
c=静态施法(兰特()%26+65);
d=静态施法(兰特()%26+97);
e=静态施法(兰特()%26+97);
f=静态施法(兰特()%26+97);
cout您只需要在rand
中设置一次种子。在代码开头设置种子:
int main()
{
srand(time(NULL)); //<---
int n;
cin>>n;
for (int i=1;i<=n;i++)
{
generatepassword();
}
return 0;
}
intmain()
{
srand(time(NULL));/>n;
关于(int i=1;i请参考函数srand的用法:
对于srand调用中使用的每个不同种子值,可以预期伪随机数生成器将在随后的rand调用中生成不同的连续结果
使用同一种子进行的两次不同初始化将在后续对rand的调用中生成相同的连续结果
在您的代码中,generatepassword()的调用速度非常快,以至于种子值都是相同的。尽管这样可以使它工作:在main中的循环中插入>1秒的延迟。