• java中Scanner和random的用法


    Scanner是默认按照行来读取数字的。

    创建一个用来输入的函数

    Scanner scan=new Scanner(System.in);system.in是表示从控制台输入。

    然后用一个变量类接收这个值

    int n=scan.nextInt();

    只要声明一个对象即可,后面直接利用scan的方法转换成各种类型即可。

    Random方法是随机生成数的方法。

    种子是表示在这个数的范围内生成的随机数字。

    即上面这个表示在10的范围内生成的随机数字。

    下面是利用蒙特卡罗算法来判断矩阵AB=E,即矩阵互逆。

    package suanfa;

    import java.util.Random;
    import java.util.Scanner;

    public class MtklSuanfa {
    public static void main(String[] args) {
    System.out.println("请输入矩阵的维数n:");
    Scanner scan=new Scanner(System.in);;

    int n=scan.nextInt();

    double a[][]=new double[n][n];
    double b[][]=new double[n][n];
    System.out.println("请输入矩阵a");

    for ( int i = 0; i <n; i++) {
    for ( int j = 0; j <n; j++) {
    //scan=new Scanner(System.in);
    a[i][j]=scan.nextDouble();
    }

    }
    System.out.println("输出的矩阵a是:");
    for ( int i = 0; i <n; i++) {
    for ( int j = 0; j <n; j++) {
    System.out.print(a[i][j]+" ");
    if (j+1==n) {
    System.out.println("");

    }
    }

    }


    System.out.println("请输入矩阵b");
    for (int i = 0; i <n; i++) {
    for (int j = 0; j <n; j++) {
    //scan=new Scanner(System.in);
    b[i][j]=scan.nextDouble();
    }

    }
    System.out.println("输出的矩阵b是:");
    for ( int i = 0; i <n; i++) {
    for ( int j = 0; j <n; j++) {
    System.out.print(b[i][j]+" ");
    if (j+1==n) {
    System.out.println("");

    }
    }

    }

    int result=mtkl(a,b,n);

    if (result==0) {
    System.out.println("a和b不是互逆矩阵");
    }
    else{
    System.out.println("a和b是互逆矩阵");
    }
    }

    private static int mtkl(double[][] a, double[][] b, int n) {
    int flag = 0;
    Random random=new Random();
    double [] x=new double[n];
    double [] y=new double[n];
    double []z=new double[n];
    for (int i = 0; i < n; i++) {
    x[i]=random.nextInt(10);
    }
    //计算y=bx
    compute(b,x,y,n);
    //计算z=ay=abx
    compute(a,x,z,n);

    for (int i = 0; i < n; i++) {
    if(Math.abs( z[i]-x[i] )==0 ){
    flag=1;
    }
    flag=0;

    }
    return flag;

    }

    private static void compute(double[][] a, double[] x, double[] y, int n) {
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    {
    y[i] += a[i][j] * x[j];
    }
    }

    }

  • 相关阅读:
    《转》 在C++中使用TinyXML2解析xml
    基于多种转换语义的图数据库查询
    tomcat内存、连接数优化
    JAVA基础针对自己薄弱环节总结01(循环之前的知识)
    CodeForces
    N年的经验在别人眼里是怎么看的?
    perl install-module.pl DateTime 执行无效问题的解决
    在Linux上使用iptables命令开启对外访问的网络端口
    Linux上安装Bugzilla4.4小记
    在Lotus Notes设置邮件转发
  • 原文地址:https://www.cnblogs.com/fengli9998/p/6138686.html
Copyright © 2020-2023  润新知