造数据 · mt19937 · 求助
查看原帖
造数据 · mt19937 · 求助
580202
Siegerkranz_2735楼主2023/9/2 15:27

不知道为什么运行不出来

#include <iostream>
#include <fstream>
#include <vector>
#include <random>
#include <algorithm>

using namespace std;

// 生成随机整数
int generateRandomInteger(int minVal, int maxVal) {
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<int> distribution(minVal, maxVal);
    return distribution(gen);
}

// 生成不重复的随机整数列表
vector<int> generateUniqueRandomIntegers(int minVal, int maxVal, int count) {
    vector<int> numbers;
    for (int i = minVal; i <= maxVal; ++i) {
        numbers.push_back(i);
    }
    random_shuffle(numbers.begin(), numbers.end());
    numbers.resize(count);
    return numbers;
}

// 生成测试数据
void generateTestData(int testCase) {
    int N = generateRandomInteger(2, 100000);
    int M = generateRandomInteger(1, 200000);
    int Q = generateRandomInteger(1, min(M, 200000));

    vector<int> cities;
    for (int i = 1; i <= N; ++i) {
        cities.push_back(i);
    }

    vector<pair<int, int>> routes;
    for (int i = 0; i < M; ++i) {
        vector<int> uv = generateUniqueRandomIntegers(1, N, 2);
        routes.push_back({uv[0], uv[1]});
    }

    vector<int> priceChanges = generateUniqueRandomIntegers(1, M, Q);

    ofstream outputFile("train" + to_string(testCase) + ".in");
    outputFile << N << " " << M << " " << Q << endl;
    for (const auto& route : routes) {
        outputFile << route.first << " " << route.second << endl;
    }
    for (int priceChange : priceChanges) {
        outputFile << priceChange << endl;
    }
    outputFile.close();
}

int main() {
    for (int i = 1; i <= 20; ++i) {
        generateTestData(i);
    }
    return 0;
}
2023/9/2 15:27
加载中...