c++ - 如何生成不同对的不等数?

标签 c++

我想创建 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/

相关文章:

c++ - 如何使用 vlc-qt libvlc 在 qt 中向后播放视频

c++ - DropDownList 控件右键单击事件

c++ - 如何使用boost program_options读取整数数组?

c++ - 共享库的生命周期?

c++ - 修改 OpenGL 中的单个顶点位置

c++ - 不能让 atoi 接收字符串(字符串与 C 字符串?)

c++ - 如何从私有(private)字符串中检索数据

c++ - 从 GetAdaptersAddresses 返回的 ERROR_INSUFFICIENT_BUFFER

c++ - 使用 stringstream 和 ofstream 写长日志文件

c++ - std::sort - 给定一个自定义排序函数,是否可以在一次比较中进行多个排序查询?