Gracekite's Homepage

Back

造数据方法大全#

在一切的一切开始之前#

优质的随机数?rand()

#include<chrono>
#include<random>
mt19937_64  rnd(chrono::steady_clock::now().time_since_epoch().count());//unsigned long long
mt19937  rnd(chrono::steady_clock::now().time_since_epoch().count());//unsigned int
cpp

简单一点?

#include<random>
#include<ctime>
mt19937_64  rnd(time(0));//unsigned long long
mt19937  rnd(time(0));//unsigned int
cpp

需要负数?

推出我们的梅森旋转引擎

mt19937_64 egn(time(0));
uniform_int_distribution<long long> rnd(l,r);/* 根据范围给出l,r */
cout<<rnd(egn)<<' ';
cpp

打乱序列?

int a[1024];
for(int i=0;i<1024;i++)a[i]=i;
srand(time(NULL));
random_shuffle(a,a+1024);
cpp

高质量的->

#include<chrono>
#include<random>
#include<iostream>
#include<algorithm>
using namespace std;
mt19937_64  rnd(chrono::steady_clock::now().time_since_epoch().count());
int main(){
    int a[10];
    for(int i=0;i<10;i++)a[i]=i;
    shuffle(a,a+10,rnd);
    for(int i=0;i<10;i++)cout<<a[i]<<endl;
}
cpp

在一切开始之前#

脚本读出?

造数据的时候可能需要通过命令行脚本.bat如

DataMaker.exe num1 num2 > 1.in
DataMaker.exe num1 num2 >> 2.in
DataMaker.exe num3 num4 > 3.in
...
bat

这时候我们需要将main()

int main(){

}
cpp

更改为

int main(int argc,char* argv[]){
    int a = atoi(argv[1]);
    long long b = atoll(argv[2]);
    double c = atof(argv[3]);
}
cpp

文件输入输出?

#include<fstream>
int main(int argc,char* argv[]){
    ifstream fin;
    ofstream fout;
    fin.open("your file");
    fout.open("your file");
    int n;
    fin>>n;
    fout<<n;
}
cpp

打开类型

常量含义
ios_base::in打开文件,读取
ios_base::out打开文件,写入
ios_base::ate打开文件,移到文件尾
ios_base::app追加到文件尾
ios_base::trunc如果文件存在,则截断文件
ios_base::binary二进制文件

上面的fout.open()其实是有三个参数的,第一个是文件的路径,第二个是打开文件的类型,第三个是权限。如果不写的话,会采用默认参数,就是ios_base::out|ios_base::trunc;

开始之前#

模仿testlib.h(Github) ↗

我们给出一些常用的rand方式

好戏开场#

造一棵树#

普通树(链/菊花)#

代码如下

你需要喂给我:

tree.exe N T F
<!-- N节点个数, T随机次数(正的越大越链,负的越小越菊花), F(可选,若在程序中定义了IOFILE,则填入输出文件名) -->
bat

蒲公英#

造两棵树,一个是链,另一个是菊花
把链的端点和菊花的花心连起来

代码如下

你需要喂给我:

Dandelion.exe N R F
<!-- N节点个数, R(菊花的花心和链的端点), F(可选,若在程序中定义了IOFILE,则填入输出文件名) -->
bat

造一张图#

造数据?拿脚造!
https://betteroier.github.io/blog/%E9%80%A0%E6%95%B0%E6%8D%AE%E6%8B%BF%E8%84%9A%E9%80%A0
Author Yuxuan Zheng
Published at September 8, 2023