当前位置: 首页 > news >正文

【算法模板】算竞技巧:Python对拍数据生成

在计算机编程竞赛中,对拍(Testlib)是一种验证程序正确性的方法。它通常用于检查一个程序的输出是否与另一个程序的输出一致,以确保程序的正确性。

对拍程序

【算法模板】算竞技巧:对拍全解_算法竞赛对拍-CSDN博客

#include <iostream>
#include <chrono>int main() {system("g++ std.cpp -o std.exe");system("g++ force.cpp -o force.exe");int cnt = 0;do {std::cout << "Round " << ++cnt << std::endl;system("python data.py > input.txt");clock_t start = clock();system("std.exe < input.txt > sout.txt");clock_t end = clock();std::cout << "std:"<< double(end - start)/ CLOCKS_PER_SEC << "sec" << std::endl;start = clock();system("force.exe < input.txt > fout.txt");end = clock();std::cout << "force:"<< double(end - start)/ CLOCKS_PER_SEC << "sec" << std::endl;} while (system("fc fout.txt sout.txt") == 0);return 0;
}

random模块

Python的random模块提供了生成伪随机数的各种方法。这些方法可以用于生成整数、浮点数、随机选择、打乱顺序等。下面是random模块的一些常用功能函数以及它们的使用方法:

  • random.random()

    生成一个范围在[0.0, 1.0)之间的浮点数。

    # 生成一个随机浮点数
    print(random.random())  # 输出示例:0.37444887175646646
    
  • random.randint(a, b)

    生成一个范围在[a, b]之间的随机整数,包括a和b。

    # 生成一个范围在1到10之间的随机整数
    print(random.randint(1, 10))  # 输出示例:7
    
  • random.uniform(a, b)

    生成一个范围在[a, b]之间的随机浮点数。

    # 生成一个范围在1.5到10.5之间的随机浮点数
    print(random.uniform(1.5, 10.5))  # 输出示例:7.123456789
    
  • random.choice(seq)

    从非空序列seq中随机选择一个元素。

    # 从列表中随机选择一个元素
    print(random.choice([1, 2, 3, 4, 5]))  # 输出示例:3
    
  • random.choices(population, weights=None, k=1)

    population中随机选择k个元素,返回一个列表。可以指定weights进行加权随机选择。

    # 从列表中随机选择3个元素
    print(random.choices([1, 2, 3, 4, 5], k=3))  # 输出示例:[4, 1, 5]# 使用权重进行随机选择
    print(random.choices([1, 2, 3, 4, 5], weights=[10, 1, 1, 1, 1], k=3))  # 输出示例:[1, 1, 4]
    
  • random.sample(population, k)

    population中随机选择k个唯一元素,返回一个列表。

    # 从列表中随机选择3个唯一元素
    print(random.sample([1, 2, 3, 4, 5], k=3))  # 输出示例:[2, 5, 3]
    
  • random.shuffle(seq)

    将序列seq中的元素随机打乱,seq会被原地修改。

    # 随机打乱列表中的元素
    lst = [1, 2, 3, 4, 5]
    random.shuffle(lst)
    print(lst)  # 输出示例:[3, 1, 5, 2, 4]
    
  • random.gauss(mu, sigma)

    生成一个服从高斯分布(正态分布)的随机浮点数,均值为mu,标准差为sigma

    # 生成一个均值为0,标准差为1的高斯分布随机浮点数
    print(random.gauss(0, 1))  # 输出示例:-0.4943560805796826
    
  • random.seed(a=None)

    初始化随机数生成器。a可以是任意可散列的对象。如果省略或为None,则使用系统时间或操作系统提供的随机源。

    # 使用种子进行随机数生成
    random.seed(42)
    print(random.random())  # 输出示例:0.6394267984578837
    
  • random.getrandbits(k)

    生成一个拥有k个随机比特位的整数。

    # 生成一个拥有16个随机比特位的整数
    print(random.getrandbits(16))  # 输出示例:57856
    

整数数组

import randomdef generate_integer_array(n, low=0, high=1000):array = [random.randint(low, high) for _ in range(n)]# 输出数组大小print(n)# 输出数组元素,使用空格分隔print(" ".join(map(str, array)))if __name__ == "__main__":n = random.randint(1, 100)  # 随机生成数组大小generate_integer_array(n)

浮点数数组

import randomdef generate_float_array(n, low=0.0, high=1000.0):array = [random.uniform(low, high) for _ in range(n)]# 输出数组大小print(n)# 输出数组元素,使用空格分隔,并保留两位小数print(" ".join(f"{x:.2f}" for x in array))if __name__ == "__main__":n = random.randint(1, 100)  # 随机生成数组大小generate_float_array(n)

从1到n的排列

import randomdef generate_permutation(n):permutation = list(range(1, n + 1))# 随机打乱排列random.shuffle(permutation)# 输出排列大小print(n)# 输出排列元素,使用空格分隔print(" ".join(map(str, permutation)))if __name__ == "__main__":n = random.randint(1, 100)  # 随机生成排列大小generate_permutation(n)

import randomdef generate_tree(num_nodes):edges = []for i in range(2, num_nodes + 1):u = random.randint(1, i - 1)# 生成从节点u到节点i的边edges.append((u, i))# 输出节点数print(num_nodes)# 输出所有边for u, v in edges:print(u, v)if __name__ == "__main__":num_nodes = random.randint(2, 10)  # 随机生成节点数generate_tree(num_nodes)

无向图

import randomdef generate_undirected_graph(num_nodes, num_edges):edges = set()while len(edges) < num_edges:u = random.randint(1, num_nodes)v = random.randint(1, num_nodes)if u != v:if u > v:u, v = v, u# 确保边(u, v)是唯一的edges.add((u, v))# 输出节点数和边数print(num_nodes, num_edges)# 输出所有边for u, v in edges:print(u, v)if __name__ == "__main__":num_nodes = random.randint(2, 10)  # 随机生成节点数num_edges = random.randint(1, num_nodes * (num_nodes - 1) // 2)  # 随机生成边数generate_undirected_graph(num_nodes, num_edges)

有向图

import randomdef generate_directed_graph(num_nodes, num_edges):edges = set()while len(edges) < num_edges:u = random.randint(1, num_nodes)v = random.randint(1, num_nodes)if u != v:# 确保边(u, v)是唯一的edges.add((u, v))# 输出节点数和边数print(num_nodes, num_edges)# 输出所有边for u, v in edges:print(u, v)if __name__ == "__main__":num_nodes = random.randint(2, 10)  # 随机生成节点数num_edges = random.randint(1, num_nodes * (num_nodes - 1))  # 随机生成边数generate_directed_graph(num_nodes, num_edges)

*函数图像

import tkinter as tk  # 导入tkinter模块以便在Python中创建图形用户界面  def plot_function(x_values, y_values):  # 创建根窗口  root = tk.Tk()  root.title("Function Plotter")  # 设置窗口标题  # 创建一个画布,指定宽度、高度和背景颜色  canvas = tk.Canvas(root, width=400, height=400, bg="white")  canvas.pack()  # 将画布添加到窗口中并显示  # 获取画布的宽度和高度  width = int(canvas['width'])  height = int(canvas['height'])  # 计算x和y值的最小值和最大值,以确定数据范围  x_min, x_max = min(x_values), max(x_values)  y_min, y_max = min(y_values), max(y_values)  # 根据画布的大小和数据范围计算x和y的缩放因子  x_scale = width / (x_max - x_min)  y_scale = height / (y_max - y_min)  # 计算每个点在画布上的位置,并进行缩放  points = [  (  (x - x_min) * x_scale,  # 使用缩放因子转换x坐标  height - (y - y_min) * y_scale  # 使用缩放因子转换y坐标,y坐标需要反转以符合画布的坐标系  )  for x, y in zip(x_values, y_values)  # 将x和y值组合在一起  ]  # 在画布上绘制线条,连接相邻的点  for i in range(len(points) - 1):  canvas.create_line(points[i], points[i + 1], fill="blue")  # 绘制线条,颜色为蓝色  # 进入主事件循环,等待用户操作  root.mainloop()if __name__ == "__main__":x_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]y_values = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]plot_function(x_values, y_values)
http://www.lryc.cn/news/417144.html

相关文章:

  • 计算机基本理论与程序运行原理概述
  • SpringBoot中的server.context-path
  • AI绘画绘画 Stable Diffusion ,从零开始轻松变现,AI绘画副业创收指南,一天一个AI帮你赚钱小技巧!
  • 阿里云镜像站,提供了各种第三方镜像地址
  • stm32入门学习11-硬件I2C和MPU
  • 如何在C++、PHP、GO中使用AI生成PPT API接口
  • 力扣面试150 逆波兰表达式求值 栈 模拟栈
  • 动手学深度学习V2每日笔记(深度卷积神经网络AlexNet)
  • 室内定位:紧耦合的学习惯性里程 (TLIO)
  • 【面试之算法篇】寻找二叉树中两个节点的最低公共祖先
  • 使用Unity开发编辑系统时复制物体的一些细节问题
  • 【C++】模版初阶+STL简介
  • Vue3中的toRef和toRefs的区别和用法
  • 【docker快捷部署系列一】docker快速入门,安装docker,解决运行Docker Quickstart Terminal出错
  • vulnhub靶机实战_DC-8
  • 如何做到项目真实性优化?保姆级写简历指南第五弹!
  • Python Beautiful Soup介绍
  • NDI Tools汉化版的安装
  • 【JAVA多线程】AQS,JAVA并发包的核心
  • springcloud loadbalancer nacos无损发布
  • React原理
  • React-Native优质开源项目
  • Ajax-02
  • 供应商较多的汽车制造业如何选择供应商协同平台?
  • 【开端】JAVA Mono<Void>向前端返回没有登陆或登录超时 暂无权限访问信息组装
  • Python(模块---pandas+matplotlib+pyecharts)
  • 解决使用Navicat连接数据库时,打开数据库表很慢的问题
  • nginx重启报错nginx: [error] invalid PID number
  • 人工智能深度学习系列—深度学习中的相似性追求:Triplet Loss 全解析
  • 26. Hibernate 如何自动生成 SQL 语句