一、题目
利用随机函数产生36个10~30之间的整数给一个6*6的矩阵赋值。
(1)求最大元素,并指出其在矩阵中的所有出现位置;
(2)求该矩阵的转置矩阵。
二、实验代码
package fighting;
import java.util.Random;
public class fighting
{
public static void main(String[] args)
{
//int m=10,n=30;
Random r=new Random();
int[][] a=new int[6][6];
int max=a[0][0];
System.out.println("原矩阵为:");
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
a[i][j]=r.nextInt(21)+10;//生成随机数10~30法一
// a[i][j]=(int)(Math.random()*10%(n-m+1)+m); //生成随机数10~30法二
if(max<a[i][j])
{
max=a[i][j];
}
System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println("该6*6矩阵的最大值为:"+max);
System.out.println("其出现的位置为:");
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
if(a[i][j]==max)
{
System.out.println(i+" "+j);
}
}
}
//求解转置矩阵直接a[j][i]=a[i][j]即可
System.out.println("转置矩阵为:");
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print(a[j][i]+" ");
}
System.out.println();
}
}
}
三、运行结果
四、实验总结
1、将矩阵的行列互换之后得到的矩阵,称为原矩阵的转置矩阵,在程序中求解转置矩阵时直接将a[j][i]=a[i][j]即可,即二维数组直接交换行标和列标。
2、产生指定范围的随机数有以下两种常见的方法:
(1)类java.util.Random提供了产生各种类型随机数的方法,使用随机时需要提前导入.
Random r=new Random();先生成一个Random的对象r,r调用nextInt()方法产生随机整数,调用nextDouble()方法产生随机单精度小数,调用nextFloat()方法产生随机双精度小数等等。产生指定范围[min,max]的随机数公式为以随机整数为例:int r=r.nextInt(max-min+1)+min;比如本题中产生10~30的随机整数可以写为a[i][j]=r.nextInt(21)+10.
(2)Math.random()是生成[0,0.1)(区间为前闭后开)的double类型的数据。当需要生成整数,需要进行类型强制转换。产生指定范围[min,max]的随机数公式为以随机整数为例:(int)(Math.random()*10%(max-min+1)+min);比如本题中产生10~30的随机整数可以写为a[i][j]=(int)(Math.random()*10%(21)+10).
更多推荐
Java编程之转置矩阵
发布评论