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 ("");
       }
     }

    }

  • 相关阅读:
    xudyh的gcd模板
    [转]vi command summary
    Uva11538 排列组合水题
    html中的块与布局
    使用bootstrap-table插件
    2015 10月16日 工作计划与执行
    2015 10月15日 工作计划与执行
    2015 10月14日 工作计划与执行
    2015 10月13日 工作计划与执行
    2015 10月12日 工作计划与执行
  • 原文地址:https://www.cnblogs.com/MichaelLi1994/p/3818920.html
Copyright © 2011-2022 走看看