我正在尝试生成唯一的会话ID。每个会话ID都是一个随机整数。主要要求是每个会话ID都是唯一的。我正在努力找到最有效的算法。
场景:从1到10生成10个随机数。
我的算法:
// Generate unique pseudo-random numbers between 1 and 10 inclusive
vector<int> vList;
for (int i = 1; i <= 10; i++)
{
vList.push_back(i);
}
// vList should have {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
for (int j = 1; j <= 10; j++)
{
int k = (rand() % vList.size());
cout << vList[k] << " ";
vList.erase(vList.begin() + k);
}
// Sample output: 5 1 10 7 8 2 4 9 3 6
该算法的时间复杂度为O(n),空间复杂度为O(n)。有更高效的算法吗?