python由于没有精度的限制(可以说是不存在高精的说法),所以可以方便快速的生成题目要求范围内的随机测试数据。而且不需要太深入的了解python的语法。

1.所使用到的模块

import random

  注:random是python自带模块,它可以用来随机生成数据,不需要下载。

2.random模块中包含的主要函数函数

import randomprint( random.random() )             #在[0,1)范围内随机生成的一个实数
print( random.randint(1,10) )        # 产生 1 到 10 的一个随机整数
print( random.random() )             # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) )     # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
print( random.randrange(1,100,2) )   # 生成从1到100的间隔为2的随机整数(随机的奇数)a=[1,3,5,6,7]
random.shuffle(a)                    # 将序列a中的元素顺序打乱
print(a)
对应的随机的一组结果如下:
0.418181846080815
10
0.016338410499876943
5.102477330276011
o
91
[5, 7, 3, 6, 1]

3.搭配python文件的打开关闭(详见链接)

①文件的打开

fileobject = open(file_name [, access_mode][, buffering])

  可能对于新手来说上面这条语句有点难。其实我们成信息学奥赛题目测试数据,一般只会用到前两个参数;
  1. 第一个参数是要打开指定文件的文件名,文件默认目录是和py文件同文件夹下;如果文件不存在,就会在与py文件同文件夹下新建一个文件
  2. 第二个参数是指打开文件后进行的操作。生成随机数据是往文件里面写数据,所以一般这个参数是“w”,其他操作详见链接。
  如下所示,打开一个名叫test.in的文件,对其进行写的操作。

# 打开一个文件
fp = open("test.in", "w")#这里的"fp"是一个文件对象,相当于一个变量,名字任意

②文件的写操作

  打开一个文件之后,就开始生成随机数据了,有了刚才random的基础,在加上python的循环语句,就可以生成随机数据了,写操作的语法如下:

fileObject.write(string)

  调用文件对象的write函数,往文件里字符串string。

注意:由于文件的写操作是对字符串进行写操作,所以当你生成了随机数之后,你要把这些随机数使用强制类型转换函数str(int)转换成字符串之后,再进行写操作。

③文件的关闭

  当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

fileObject.close()

4.实例

  完成了以上内容的学习之后,已经基本上掌握了随机数据生成的流程与方法,下面给一个实例:

import random
fp = open("test1.in", 'w')#打开文件
for j in range(1,101):#题目要求输入有多组数据,我这里生成100组c=random.randint(1,1001)#岛屿的数量c-1fp.write(str(c-1)+" "+str(random.randint(99900,100000))+"\n")#对生成的随机数,转换成字符串之后再写for i in range(1,c):  a = random.randint(-100000,100000)#横坐标的范围b = random.randint(0,100000)#纵坐标的范围fp.write(str(a)+" "+str(b)+"\n")fp.write("\n")#每组数据之间有一个换行
fp.write("0 0\n")#输入"0 0"表示结束输入
fp.close();#关闭文件 

5.得出输出数据

  使用题目的标准程序来得出输出数据,使用方法如下:

int main()
{//freopen("test1.in","r",stdin);//文件的输入,读操作"r"//freopen("test1.out","w",stdout);//文件的输出,写操作"w"......
}

  在你的题目对应的标准c++程序中的main()函数的开头,加上文件的输入输出语句,就能够在与c++程序相同目录下生成所对应的输出数据。

  注意:头文件为#include<cstdio>#include<iostream>,所对应的输入输出就是scanf()和printf()cin和cout。输入的文件就是刚才我们使用python所生成的文件。

有任何疑问可以在下方评论或者私信我,(●’◡’●)。

使用python生成信息学奥赛题目测试数据相关推荐

  1. python做信息学奥赛(csp-j)

    信息学奥赛官网:信息学奥赛一本通(C++版)在线评测系统 注意:这个网站只能看题,不能提交python代码. 第一部分 基础知识 第一节 语言入门 1004:字符三角形 题目描述:给定一个字符,用它构 ...

  2. python是信息学奥赛的前置课吗

    NOI全国青少年信息学奥林匹克竞赛 NOI全国青少年信息学奥林匹克竞赛 NOI Linux 2.0发布,将于9月1日起正式启用! NOI Linux 2.0发布,将于9月1日起正式启用! 关于NOI系 ...

  3. C++信息学奥赛题目归类:2007-2018初赛普及组单项选择题

    每个题前的()里的数字代表了年份 我把选择题分成了三部分,第一部分的参考性不大,可以适当做做,第二部分的知识理论题的出题频率相对较高,希望针对相应的知识点进行讲解和至少一次的练习,第三部分是相对比较难 ...

  4. C++信息学奥赛题目归类:2007-2018年初赛普及组问题求解

    2007 题目一 (子集划分)将n个数(1,2,-,n)划分成r个子集.每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集.将不同划分方法的总数记为S(n,r).例如,S(4,2)= ...

  5. C++信息学奥赛题目归类:初赛普及组阅读程序写结果题

    NOIP阅读程序写结果题 初赛阅读程序写结果部分(共4题,每题8分,共计32分.) 注重培养学生的数学运算和归纳能力 这类题型主要是读程序写结果. 其中前两题为简单题,应该是必得分,第三题属于中等题, ...

  6. 1267 老鼠的旅行 2012年CCC加拿大高中生信息学奥赛

    1267 老鼠的旅行  2012年CCC加拿大高中生信息学奥赛 题目描述 Description You are a mouse that lives in a cage in a large lab ...

  7. python能参加奥赛吗-家长们注意了!关于信息学奥赛(NOIP),你需要知道这些...

    原标题:家长们注意了!关于信息学奥赛(NOIP),你需要知道这些 导读:获得全国青少年信息学奥林匹克联赛(NOIP)一等奖的应届高中毕业生,均具有保送进入高校就读的资格.部分地区一等奖获奖选手还享有高 ...

  8. python生成测试数据_Python基于Hypothesis测试库生成测试数据

    Hypothesis是Python的一个高级测试库.它允许编写测试用例时参数化,然后生成使测试失败的简单易懂的测试数据.可以用更少的工作在代码中发现更多的bug. 安装 pip install hyp ...

  9. 1000:入门测试题目 【信息学奥赛一本通(C++版)在线评测系统】

    为了更好的阅读体验,建议您移步至我的博客园来阅读此文章. 传送门 「原题」 1000:入门测试题目 时间限制: 1000 ms 内存限制: 32768 KB 提交数: 0 通过数: 0 [题目描述] ...

最新文章

  1. 最新版IntelliJ IDEA 15开发Java Maven项目
  2. linux制作共享服务器,Linux如何制作一个简单的共享服务器
  3. How to create a site with AJAX enabled in MVC framework.
  4. hdu2102 水搜索
  5. 快速排序及优化(Java实现)
  6. 2017年我国SAP行业三大利好
  7. mysql创建唯一索引_mysql创建唯一索引
  8. spring mvc 传中文 到controller层乱码的 解决方法
  9. 请写一个java程序实现线程连接池功能_请写一个java程序实现线程连接池功能
  10. 解决系统性能问题:线程增加导致堆增加
  11. 数据结构(C语言版 第2版严蔚敏版)完整课后习题答案汇总
  12. python下载百度文库文档_Python百度文库爬虫之txt文件
  13. 【破解】百度网盘不限速(亲测可用)
  14. 路由器的介绍和基本原理
  15. samba报错“Failed to open /etc/secrets.tdb”
  16. 5410 ACM 杭电 01+完全背包
  17. 人工智能——归结推理
  18. 二进制bit0是什么意思_阜平吧在讨论5G的问题,感觉挺有意思,科普下……
  19. 什么是坐标系,不同坐标系之间有什么区别
  20. 2018年网上最靠谱的正规赚钱思路

热门文章

  1. p2p终结者,汇报csdn广大码农。
  2. LeetCode 1109. 航班预订统计
  3. 服务器虚拟化的应用场景,FusionSphere解决方案之服务器虚拟化场景
  4. 使用MediaPlayer播放音频
  5. 华为HCIE 论述 ISIS割接
  6. win10计算机管理的作用,Win10新功能的详细介绍
  7. Day36.SQL详解
  8. LUA笔记(3)-- 关于lua的使用
  9. Google Maps 全球所有国家地名全部中文化,但是……
  10. Xilinx FPGA的程序加密方法