【发布时间】:2017-11-10 22:56:37
【问题描述】:
我正在尝试将随机数存储在向量中,但我希望每个数字都是唯一的。我可以在不使用 unique() 或 random_shuffle() 的情况下使用 for 循环吗?
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
vector<int> v;
for (unsigned int i = 0; i < 30; i++) {
v.push_back(rand() % 30);
}
for (unsigned int j = 0; j < 30; j++) {
cout << v[j] << endl;
}
return 0;
}
【问题讨论】:
-
你只是想随机化顺序吗?
-
你为什么坚持一个困难而低效的解决方案?生成一个有序的向量,然后打乱它。
-
如果你不想使用标准库的随机洗牌,那就自己写吧。 Fisher-Yates shuffle 用 rand() 本身很容易实现。
-
不只是“随机数”,您必须指定分布。如果您不关心分布,请使用 1,2,3,...,30。