82 lines
3.1 KiB
C++
Executable File
82 lines
3.1 KiB
C++
Executable File
/*****************************************************************************
|
|
* 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 : *
|
|
* <Date> | <Version> | <Author> | <Description> *
|
|
*----------------------------------------------------------------------------*
|
|
* 2022/11/12 | 1.0 | Mingtian Shao | Create file *
|
|
*----------------------------------------------------------------------------*
|
|
* *
|
|
*****************************************************************************/
|
|
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <random>
|
|
#include <cmath>
|
|
|
|
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<signed> 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;
|
|
}
|