c++编程题文件读取和随机数

之前因为经常出编程题,自己造数据,所以种类记录一下自己出数据的方法,涉及到简单的文件读取和随机数。

  • 随机数
    • 要取得[ a , b )的随机整数,使用( rand() % ( b - a ) ) + a ;
    • 要取得[ a , b ]的随机整数,使用( rand() % ( b - a + 1 ) ) + a ;
    • 要取得( a , b ]的随机整数,使用( rand() % ( b - a ) ) + a + 1;
    • 需要用到时间种子srand(time(NULL)),不然会有伪随机数的问题。
    • 下面一个简单的生成随机数的程序,一般用到rand和freopen就好了,简单改一改就可以达到想要的随机数。
#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("1.in", "w", stdout);
	srand(time(NULL));
	int n = 20;
	int m = 10;
	
	for( int c = 0 ; c < 30 ; c++ ){
		cout << n << " " << m << '\n';
		for( int i = 0 ; i < m ; i++ ){
			map<int , int>flag; 
			int num1 = 0;
			int num2 = 0;
			while(1){
				bool f1 = false;
				bool f2 = false;
				num1 = ( rand() % ( n - 1 + 1 ) ) + 1;
				num2 = ( rand() % ( n - 1 + 1 ) ) + 1;
				if( !flag[num1] ){
					flag[num1] = 1 ;
					f1 = true;
				} 
				if( !flag[num2] ){
					flag[num2] = 1;
					f2 = true;
				} 
				if( f1 && f2 ){
					cout << num1 << " " << num2 << '\n';
					break;
				}
			}
			
		}
	}

	return 0;
}
  • 文件读取
    • 用到的就是c++很简单的freopen
    • freopen(“1.in”, “r”, stdin),从1.in读取数据作为输入,其中r表示读取,w表示写入
    • 注意文件的位置,因为1.in和cpp文件同级所以相对路径可以直接写文件名。
    • freopen(“1.out”, “w”, stdout),表示把自己代码的输出写入1.out文件中,同样注意文件位置。
    • 一般将freopen放在主函数(main函数)一开始位置。
int main()
{
    //表示从1.in读取数据作为输入,并将自己代码的运行结果作为输出保存到1.out
	freopen("1.in", "r", stdin);
    freopen("1.out", "w", stdout);
    ...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值