我想创建 N 个不同的对,并且希望对中的数字不相等。成对的数字范围为 0 到 K - 1。
vector<pair<int, int> > p;
pair<int, int> temp;
int N = 8;
int K = 7;
int c = 0;
for (int i = 0; i < N; i++) {
int f = random(0, K-1);
int s = random(0, K-1);
p.push_back({ f, s });
}
temp = p[c];
for (int i = 0; i < N; i++) {
if (temp != p[i]) {
c++;
}
else {
while (temp == p[i]) {
temp.first = random(0, K - 1);
}
c++;
}
}
我想要这样的数字对: 输出: (0, 4) (0, 3) (1, 2) (1, 4) (1, 5) (2, 3) (5, 3) (5, 4)
最佳答案
一个简单的方法:
将您的数字对放入 std::set
中(这将消除重复项)。继续生成对,直到集合的 .size()
达到您想要的唯一对数量。
关于c++ - 如何生成不同对的不等数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58789934/