我需要生成一个大小为32个字符的字符串集合(10k,甚至更多),随机从“a-z”,“A-Z”和“0-9”中选择。
目前,我有以下代码(O(N * 32))在我的脑海中,但我想知道是否有更好的方法来实现这个功能。
int N = 10000;
vector<string> vecStr;
for (int index=0; index<N; index++)
{
string str;
for (int i = 0; i < 32; ++i)
{
int randomChar = rand()%(26+26+10);
if (randomChar < 26)
str += 'a' + randomChar;
else if (randomChar < 26+26)
str += 'A' + randomChar - 26;
else
str += '0' + randomChar - 26 - 26;
}
vecStr.push_back(str);
}
std::generate
,结合lambda表达式和C++11 PRNG功能。但这只是让代码更C++一些,而不是更有效率。另外,预先分配向量/字符串可能是个好主意。 - Some programmer dude