/***************************************************************************** * Copyright (C) 2022 Mingtian Shao shaomt@nudt.edu.cn * * * * This file is part of homework of Algorithm Design and Analysis. * * * * @file data_gen.cpp * * @brief Generate data and save it to a file * * * * @author Mingtian Shao * * @email shaomt@nudt.edu.cn * * @version 1.0 * * @date 2022-11-12 * * @license GNU General Public License (GPL) * * * *----------------------------------------------------------------------------* * Change History : * * | | | * *----------------------------------------------------------------------------* * 2022/11/12 | 1.0 | Mingtian Shao | Create file * *----------------------------------------------------------------------------* * * *****************************************************************************/ #include #include #include #include using namespace std; /** * @func data_gen * @brief 生成测试数据集 * @param k: 测试集数量 * @param n: 物品种类 * @param w: 背包重量限制 * * @return null */ void data_gen(int k, int n, int w) { char out_file[100]; //输出文件名可参考"test_{k}_{n}_{w}.data" sprintf(out_file, "test_%d_%d_%d.data", k, n, w); ofstream fout(out_file); fout << k << " " << n << " " << w << endl; default_random_engine e(time(nullptr)); //随机数分布对象 uniform_int_distribution u(2, w / 1.5); while (k--) { // 生成weight值 for (int i = 0; i < n; i++) //生成2~n的随机数序列 fout << u(e) << " "; fout << endl; // 生成value值 for (int i = 0; i < n; i++) //生成2~n的随机数序列 fout << u(e) << " "; fout << endl; } } int main(int argc, char *argv[]) { // k: 生成数据的组数 // n: 物品的种类(问题的规模) // w: 背包重量限制 if(argc != 4 ) { cout << "参数错误,参数包括: 生成数据的组数k, 物品的种类n, 背包重量限制w" << endl; exit(1); } int k, n, w; k = atoi(argv[1]); n = atoi(argv[2]); w = atoi(argv[3]); data_gen(k,n,w); return 0; }