我想知道如何在每次迭代中随机生成一个字符串。我的代码当前每次迭代生成相同的字符串。如果我输入 3 次,那么它会给我 3 次相同的字符串。我每次都想要一个不同的随机生成的字符串。
#include <iostream>
#include <string>
#include <cstdlib> /* srand, rand */
#include <ctime>
using namespace std;
string RandomString(int len)
{
string str = "0123456789ABCDEFabcdef";
string newstr;
int pos;
while(newstr.size() != len) {
pos = ((rand() % (str.size() - 1)));
newstr += str.substr(pos,1);
}
return newstr;
}
int main()
{
srand(time(NULL));
string random_str = RandomString(32);
int user_input;
cout << "Enter how many codes you want: ";
cin >> user_input;
for (int i = 0; i < user_input; i++)
{
cout << "random_str : " << random_str << endl;
}
}
Enter how many codes you want: 3 random_str : ae2e8D6C7C04Fb3b83Ec457bcedcC5F5 random_str : ae2e8D6C7C04Fb3b83Ec457bcedcC5F5 random_str : ae2e8D6C7C04Fb3b83Ec457bcedcC5F5
这是我当前的输出。请记住,它们每次都应该不同。
答案 0 :(得分:3)
您需要在每次迭代时调用该函数,并将其放入 for 循环中:
int main()
{
srand(time(NULL));
int user_input;
cout << "Enter how many codes you want: ";
cin >> user_input;
for (int i = 0; i < user_input; i++)
{
string random_str = RandomString(32); //<-- here
cout << "random_str : " << random_str << endl;
}
}
使用 C++ 你确实有更好的随机数引擎,看看这里: