【发布时间】:2013-10-22 10:40:00
【问题描述】:
我必须生成一个 大 字符串集(10k 甚至更多),大小为 32 个字符,随机从“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 expressions 和C++11 PRNG functionality 一起使用。但是,所要做的只是代码可能多一点 C++ 而少一点 C,它不会真的更有效。此外,预先分配向量/字符串可能是个好主意。
标签: c++ algorithm random shuffle