zoukankan      html  css  js  c++  java
  • 使用JAVA生成随机数实现矩阵乘法

    矩阵乘法的定义:
    在计算机中,一个矩阵实际上就是一个二维数组。一个m行n列的矩阵与一个n行p列的矩阵可以相乘,得到的结果是一个m行p列的矩阵,其中的第i行第j列位置上的数为第一个矩阵第i行上的n个数与第二个矩阵第j列上的n个数对应相乘后所得的n个乘积之和。比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。
    其中,结果矩阵的那个4(结果矩阵中第二(i)行第二(j)列)=2(第一个矩阵第二(i)行第一列)*2(第二个矩阵中第一行第二(j)列)+0(第一个矩阵第二(i)行第二列)*1(第二个矩阵中第二行第二(j)列):
     
     

     下面用Java实现矩阵乘法:

    import java.util.Random;
    public class MultiMatrixTest {
     static int[][] multiplyMatrix;//定义一个全局矩阵,存放矩阵乘积的结果
     static Random ran=new Random();
     public static void main(String args[]){
      int length1;
      int length2;
      int length3;
      length1=ran.nextInt(10)+1;//随机产生矩阵A的行数以及矩阵B列数,两个矩阵相乘行数和列数必须相同
      length2=ran.nextInt(10)+1;//随机产生矩阵A的列数
      length3=ran.nextInt(10)+1;//随机产生矩阵B的行数
      int [][]a = new int[length2][length1];
      int [][]b = new int[length1][length3];
      getAB(a,b);
      mMatrix(a,b);
      show();
     }
     public static void getAB(int[][]a,int[][]b){//使用随机数生成矩阵a和b
      for(int i=0;i<a.length;i++){
       for(int j=0;j<a[0].length;j++){
        a[i][j]=ran.nextInt(100);
       }
      }
      for(int i=0;i<b.length;i++){
       for(int j=0;j<b[0].length;j++){
        b[i][j]=ran.nextInt(100);
       }
      }
      System.out.println("输出矩阵A");//输出矩阵A
      for(int i=0;i<a.length;i++){
       for(int j=0;j<a[0].length;j++){
        System.out.print(a[i][j]+" ");
       }
       System.out.println("");
      }
      System.out.println("输出矩阵B");//输出矩阵B
      for(int i=0;i<b.length;i++){
       for(int j=0;j<b[0].length;j++){
        System.out.print(b[i][j]+" ");
       }
       System.out.println("");
      }
     }
     public static void mMatrix(int[][] a,int[][] b){//矩阵A*B
          System.out.println("输出矩阵A*B");
          multiplyMatrix=new int[a.length][b[0].length];
          for (int i = 0; i<a.length; i++) {//A的行数
          for (int j = 0; j<b[0].length; j++) {//B的列数
          for (int k = 0; k<a[0].length; k++) {//A的列数
          multiplyMatrix[i][j]=multiplyMatrix[i][j]+a[i][k]*b[k][j];//将矩阵A的第I行和矩阵B的第J列对应的数相乘得到multiplyMatrix[i][j]
          }
      }
     }
     }
     public static void show(){//输出矩阵乘积multiplyMatrix
      for (int i = 0; i<multiplyMatrix.length; i++) {
       for (int j = 0; j<multiplyMatrix[0].length; j++) {
       System.out.print (multiplyMatrix[i][j]+" ");
       }
       System.out.println ("");
       }
     }

    }

  • 相关阅读:
    cad是什么意思?教你快速把cad转换成pdf格式
    为什么街上的商贩更喜欢用微信支付,而不是支付宝,看完长知识了
    音乐剪辑软件怎么用?教你一个快速编辑音频的方法
    电脑如何录制视频?安利两种电脑录屏的方法
    被称为逆天改命的5大中国工程,曾轰动世界,你知道几个?
    如何使用音乐格式转换器?快速编辑音频文件的方法
    PPT结尾只会说“谢谢”?学会这些PPT结尾,观众主动为你鼓掌
    经典PHP面试题(冒泡排序),当场就被打脸,卧槽什么冒泡?为啥还排序?
    千万不要再搞混了,函数empty( var );输出的判断值是false : true
    PHP删除数组中空数组
  • 原文地址:https://www.cnblogs.com/MichaelLi1994/p/3818920.html
Copyright © 2011-2022 走看看