oj造数据

关于oj造数据主要用到的就是随机函数和文件流


1.随机函数是rand(),头文件为<cstdlib>

用法: int res = rand()%b + a;

res是从a开始(包括a)连续数b个数这个区间中的一个随机数,( res = [a,b) );

需要注意的是如果不设置随机种子的话,那么每次随机出来的数是一样的

设置随机种子函数srand();头文件<cstdlib>;

这里我们用时间作为随机种子,因为程序运行很快,而时间是以秒为单位的,所以我们要用到Sleep(1000);

代码如下

#include<stdio.h>
#include<cstdlib>
#include<ctime>
#include<windows.h>
using namespace std;
int main()
{
	
	for(int i = 1; i <= 10; i++)
	{
		srand(unsigned (time(NULL))); //time()函数的头文件为<ctime> 
		Sleep(1000);  			//Sleep()的函数头文件为<windows.h> 
		int res = rand()%10 + 1;
		printf("%d\n",res);
	}
	return 0;
} 

2.文件流

头文件为<fstream>

        ofstream outfile(str,ios::out);是将该文件下名为str的文件和输出流outfile绑定,并以输出(写)的方式打开文件;

        如果不存在名为str文件,该函数会先创建一个这样的文件,然后在绑定;

        也可以先创建一个输出流,之后再文件绑定,例如:   

 ofstream outfile;
 outfile.open(str,ios::out);

有时我们要批量创建文件,这时我们可以用ofstream数组;

但是我们的文件名需要不一样,例如我们想要创建如下的文件:

代码如下:

#include<stdio.h>
#include<string>
#include<fstream>
using namespace std;
int main()
{
	ofstream DataIn[100]; //一个输出流数组
	ofstream DataOut[100];
	for(int i = 1; i <= 10; i++)
	{
		string index = to_string(i);	//将i转换为string型 
		string strIn = "TestData" + index + ".in";  //输入数据文件名 
		string strOut = "TestData" + index + ".out";  //输出数据文件名 
		DataIn[i].open(strIn,ios::out);       
		DataOut[i].open(strOut,ios::out);
	}
	return 0;
}

效果如图:


对文件输出流读写和输出流读写是一样的’

例如

string str = "15445";
DataIn[1]<<str<<" "<<"12"<<35<<endl; 

效果如图

 

### 关于东华OJ平台的题目批量创建与数据生成 在讨论如何实现东华OJ平台上的“繁殖”问题时,主要涉及两个方面:一是题目的批量创建;二是测试数据的自动化生成。以下是针对这两个方面的详细说明。 #### 批量创建题目 对于题目的批量创建,可以通过以下方式实现: - **基于模板的题目生成** 使用标准化的Markdown格式来定义题目结构,并通过脚本自动生成多个类似的题目实例[^2]。这种方式适用于具有相似逻辑但参数不同的题目集。 - **前端支持批量操作** 如果东华OJ系统的前端已经提供了类似于`/questions`路径的功能,则可以在该模块中加入批量上传接口[^5]。开发者可通过API调用来提交一组预定义好的题目文件夹或JSON对象数组。 #### 自动化测试数据生成 为了提高效率并减少人工干预,在处理大量复杂场景下的输入验证需求时,推荐采用专业的测试数据生成工具或者编写定制化的程序完成这项工作。 - **利用现有资源构建通用型解决方案** 已经存在多种成熟的开源项目能够满足不同类型的算法竞赛训练环境所需的各种随机样例生产需求[^3]。例如,“先序二叉树生成器”,它可以快速制出符合特定条件的大规模样本集合供后续分析使用。 - **简易版自制方案设计思路** 当缺乏现成可用的产品作为依赖项时,也可以尝试自行搭建一套轻量化版本的数据机框架[^4]。具体做法包括但不限于设置好基础配置选项(如范围边界值设定)、引入伪随机数引擎以及封装常用函数库等环节。 ```python import random def generate_random_array(size=10, min_val=-100, max_val=100): """生成指定大小范围内均匀分布整数值序列""" return [random.randint(min_val, max_val) for _ in range(size)] if __name__ == "__main__": sample_data = generate_random_array() print(sample_data) ``` 上述代码片段展示了一个简单的例子——用于生成一定长度内的随机整数列表。可以根据实际应用场景调整其内部参数从而适应更多复杂的业务诉求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值