首页 > 其他分享 >矩阵连乘问题,生成需要的矩阵

矩阵连乘问题,生成需要的矩阵

时间:2023-10-09 23:22:05浏览次数:36  
标签:连乘 std matrix int 矩阵 cols 生成 folderName

   任务是这样子的:我们先完成txt文本矩阵的准备,大概做了50个矩阵;

 代码如下:

  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <random>
  5. #include <string>
  6. #include <windows.h> // 包含 Windows API 头文件
  7. // 创建文件夹(仅适用于 Windows)
  8. bool createDirectory(const std::string& folderName) {
  9.     BOOL result = CreateDirectory(folderName.c_str(), NULL);
  10.     return result != 0;
  11. }
  12. // 生成一个随机矩阵
  13. std::vector<std::vector<int>> generateMatrix(int rows, int cols) {
  14.     std::random_device rd;
  15.     std::mt19937 gen(rd());
  16.     std::uniform_int_distribution<int> dis(1, 10);
  17.     
  18.     std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols, 0));
  19.     
  20.     for (int i = 0; i < rows; ++i) {
  21.         for (int j = 0; j < cols; ++j) {
  22.             matrix[i][j] = dis(gen);
  23.         }
  24.     }
  25.     
  26.     return matrix;
  27. }
  28. // 保存矩阵到文本文件
  29. void saveMatrixToFile(const std::vector<std::vector<int>>& matrix, const std::string& filename) {
  30.     std::ofstream file(filename);
  31.     
  32.     if (file.is_open()) {
  33.         for (const auto& row : matrix) {
  34.             for (const auto& element : row) {
  35.                 file << element << " ";
  36.             }
  37.             file << "\n";
  38.         }
  39.         
  40.         file.close();
  41.         std::cout << "Matrix saved to file: " << filename << std::endl;
  42.     } else {
  43.         std::cerr << "Failed to open file: " << filename << std::endl;
  44.     }
  45. }
  46. int main() {
  47.  
  48.     // 文件夹名称
  49.     std::string folderName = "50_matrices";
  50.     
  51.     // 创建文件夹
  52.      bool success = createDirectory(folderName);
  53.      if (success) {
  54.          std::cout << "Folder created: " << folderName << std::endl;
  55.      } else {
  56.          std::cerr << "Failed to create folder: " << folderName << std::endl;
  57.          return 1;
  58.      }
  59.      
  60.    // fs::create_directory(folderName);
  61.     //std::filesystem::create_directory(folderName);
  62.     
  63.     int numMatrices = 50;
  64.     std::random_device rd;
  65.     std::mt19937 gen(rd());
  66.     std::uniform_int_distribution<int> dis(1, 20); // 设置矩阵的行列数范围
  67.     
  68.     std::vector<std::vector<int>> prevMatrix;
  69.     
  70.     for (int i = 1; i <= numMatrices; ++i) {
  71.         // 确定文件名和路径
  72.         std::string filename = folderName + "/M" + std::to_string(i) + ".txt";
  73.         
  74.         int rows, cols;
  75.         if (prevMatrix.empty()) {
  76.             // 第一个矩阵可以是任意维度
  77.             rows = dis(gen);
  78.             cols = dis(gen);
  79.         } else {
  80.             // 后续矩阵的行数等于前一个矩阵的列数
  81.             rows = prevMatrix[0].size();
  82.             cols = dis(gen);
  83.         }
  84.         
  85.         std::vector<std::vector<int>> matrix = generateMatrix(rows, cols);
  86.         saveMatrixToFile(matrix, filename);
  87.         
  88.         prevMatrix = matrix;
  89.     }
  90.     
  91.     return 0;
  92. }

 

这样就会生成一个矩阵;

 

当然,另一个是后来看到格式:第一行为  矩阵行数row 矩阵列数col

 

#include <iostream>
#include <fstream>
#include <vector>
#include <random>
#include <string>
#include <windows.h> // 包含 Windows API 头文件

// 创建文件夹(仅适用于 Windows)
bool createDirectory(const std::string& folderName) {
BOOL result = CreateDirectory(folderName.c_str(), NULL);
return result != 0;
}

// 生成一个随机矩阵
std::vector<std::vector<int>> generateMatrix(int rows, int cols) {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dis(1, 10);

std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols, 0));

for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
matrix[i][j] = dis(gen);
}
}

return matrix;
}

// 保存矩阵到文本文件
void saveMatrixToFile(const std::vector<std::vector<int>>& matrix, const std::string& filename) {
std::ofstream file(filename);

if (file.is_open()) {
// 写入矩阵行数和列数
file << "矩阵行数" << matrix.size() << " " << "矩阵列数" << matrix[0].size() << std::endl;
//file << "矩阵的列数col: " << cols << "\n";

//file << matrix.size() << " " << matrix[0].size() << "\n";

// 写入矩阵数据
for (const auto& row : matrix) {
for (const auto& element : row) {
file << element << " ";
}
file << "\n";
}

file.close();
std::cout << "Matrix saved to file: " << filename << std::endl;
} else {
std::cerr << "Failed to open file: " << filename << std::endl;
}
}

 

int main() {

// 文件夹名称
std::string folderName = "50_matrices";

// 创建文件夹
bool success = createDirectory(folderName);
if (success) {
std::cout << "Folder created: " << folderName << std::endl;
} else {
std::cerr << "Failed to create folder: " << folderName << std::endl;
return 1;
}

// fs::create_directory(folderName);
//std::filesystem::create_directory(folderName);

int numMatrices = 50;
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dis(1, 20); // 设置矩阵的行列数范围

std::vector<std::vector<int>> prevMatrix;

for (int i = 1; i <= numMatrices; ++i) {
// 确定文件名和路径
std::string filename = folderName + "/M" + std::to_string(i) + ".txt";

int rows, cols;
if (prevMatrix.empty()) {
// 第一个矩阵可以是任意维度
rows = dis(gen);
cols = dis(gen);
} else {
// 后续矩阵的行数等于前一个矩阵的列数
rows = prevMatrix[0].size();
cols = dis(gen);
}

std::vector<std::vector<int>> matrix = generateMatrix(rows, cols);
saveMatrixToFile(matrix, filename);

prevMatrix = matrix;
}

return 0;
}

 

OK,剩下的矩阵连乘再接着写喽;

标签:连乘,std,matrix,int,矩阵,cols,生成,folderName
From: https://www.cnblogs.com/yq15mm/p/17753476.html

相关文章

  • 利用Redis生成实时排行榜
            ......
  • openssl生成ssl证书
    参考:https://www.ihuyi.com/pd/ssl/opensslshengchengsslzhengshu.htmlSSL证书是网站安全的基石,为了保证网站数据传输的安全性,需要使用SSL证书。而在实际项目中,通常选用openssl命令来生成SSL证书。通过openssl生成SSL证书可以提高网站的安全性和用户的信任度。在下面的......
  • 生成invoke脚本
    publicstaticvoidmain(String[]args)throwsNoSuchMethodException{//入参CmsModuleDTOqueryReq=newCmsModuleDTO();queryReq.setModuleScenario("新手");//getInvoke(入参,类名.class,方法名)StringinvokeCommand......
  • 算法笔记-生成树
    概念定义图:由点和边组成的集合生成图:图中删去若干个点和若干条边后剩下的子图生成树:恰好为树的生成图最小生成树:边权总和最小的生成树严格次小生成树:边权总和严格大于最小生成树且最小 最小生成树KruskalKruskal 是通过贪心法选边加入集合来求最小生成树的算法 算法......
  • 利用 Javascript 生成数字序列
    <!DOCTYPEhtml><html><head><title>生成数字序列</title></head><body><h1>Element对象之innerHTML属性</h1><pid="demo"onclick="myFunction()">点击生成数字序列</p><script>funct......
  • 国产开源无头CMS,MyCms v4.7 快捷生成接口开发后台
    MyCms是一款基于Laravel开发的开源免费的开源多语言商城CMS企业建站系统。MyCms基于Apache2.0开源协议发布,免费且可商业使用,欢迎持续关注我们。v4.7更新内容opt:公众号菜单优化dev:API接口生成管理dev:数据表CURD管理opt:后台返回列表按钮opt:插件兼容版本......
  • Python生成随机整数数组的实用方法
    在编程中,生成随机整数数组是一项非常常见的任务。本文将介绍如何使用Python语言来生成随机整数数组,帮助读者掌握这一有用的编程技巧。通过实际的代码示例,我们将逐步指导读者完成生成随机整数数组的过程,并提供一些实际应用的建议。第一部分:了解随机数生成原理1.什么是随机数:-随机数......
  • 华为云 海报生成 CDN权限配置
    在【对象存储服务】中,找到【CDN】选择进入  选择【域名管理】,添加绑定的【CDN域名】并解析好  选择【绑定的CDN域名】的【设置】中,找到【高级配置】    在【HTTPheader配置】边,点击【编辑】  添加【access-control-allow-origin】,取值为“*”的权限,即可......
  • 腾讯云COS海报生成配置教程
    系统对接了腾讯云COS,生成海报却没有加载图片,还需要做一下的配置哟~ 登录上腾讯云的控制台(https://console.cloud.tencent.com/) 找到【内容分发网络】,在【域名管理】处,点击【添加域名】的按钮    加速区域根据运营的需求进行选择;加速域名这边填写一个二级域名;《源......
  • 【Unity】 ScriptableObject ——生成多个ScriptableObject作为子对象,可以点击展开并
     官方是这么介绍ScriptabelObject的: “ScriptableObject是一个可独立于类实例来保存大量数据的数据容器。ScriptableObject的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制件在附加的MonoBehaviour脚本中存储不变的数据,这将非常有用。每次实......