java - 随机数测试(直方图)

标签 java methods random compiler-errors histogram

我是 Java 编码新手,我正在尝试使用提供给我的以下方法创建直方图。这些注释是对每个方法的说明,稍后我们将使用它们来创建主方法并打印直方图。我已经达到了方法 3,并且能够很好地编译所有内容,但我不确定我是否做对了,我只知道它们正在正确编译到方法 4。我只是不知道该怎么做对于方法 5。 /* 方法一: 查找数组中的最大值 */

public static int max(int[]arr){
    int maxValue = arr[0];
    for ( int i=1; i < arr.length; i++ ){
        if (arr[i] > maxValue){
            maxValue = arr[i];
        }
    }
    return maxValue;
}

/* 
Method 2:
Compute a random integer in the range [a..b)
*/

public static int randomInteger(int a, int b){;
    int randomNum;

    randomNum = a+(int)(Math.random() * ((b-a)+1));
    return randomNum;
}

/* 
Method 3:
Draw a Simple histogram of the array arr.
*/

public static void drawHistogram(int[] arr){
    for ( int i=0; i<arr.length; i++ ){
        System.out.print((i*10+1)+"-"+(i*10+10)+":"+"\t");

        for (int j=0; j<arr[i]; j++)
            System.out.print("*");

        System.out.println();
    }
}

/* 
Method 4:
Compute num random integers in the range [0..range) and put the frequency in arr[]
*/

public static void doSingleTest(int[] arr, int num, int range){
    for (int i=1; i<=num; i++){
        int random = randomInteger(0,range);
        arr[random]++;
    }
}

/* 
Method 5:
Compute num pairs of random integers in the range [0..range) and put the frequency in arr[]
*/

    public static void doPairsTesting(int[] arr, int  num, int range){

   }

public static void main(String[] args) {
    int test[] = new int[]{1,2,3,4,6,11,7};
    System.out.println("method1 = "+ max(test));
    System.out.println("method2 = "+randomInteger(1,20));
    drawHistogram(test);
    doSingleTest(test,1,5);
    System.out.println("method4 = "+Arrays.toString(test));

}

最佳答案

这是设计错误int random = int randomInteger(range);我认为你需要阅读docs abot java basics .

我用下面的方式修复了方法4:

public static void doSingleTest(int[] arr, int num, int range){
    for (int i=1; i<=num; i++){
        int random = randomInteger(0,range);
        arr[random]++;
    }
}

要测试您的方法,请使用下一个主要方法,它将结果打印到控制台,或者您可以在 IDE 中使用调试器:

public static void main(String[] args) {
    int test[] = new int[]{1,2,3,4,6,11,7};
    System.out.println("mathod1 = "+ max(test));
    System.out.println("mathod2 = "+randomInteger(1,20));
    drawHistogram(test);
    doSingleTest(test,1,5);
    System.out.println("mathod4 = "+Arrays.toString(test));

}

最后你的方法 5 必须返回所需类型的值或者是 void:

public static void doPairsTest(int[] arr, int num, int range){

}

关于java - 随机数测试(直方图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783236/

相关文章:

java - 在 try 或 catch block 上调用 return 语句或 System.exit

javascript - 如何在 JavaScript 中为自定义对象创建方法?

r - 关于随机数生成器的可能问题

c - 我如何在 C 中创建一个真正的随机数 (IDE : MPLAB)

java - 如何判断数组或列表是否也是集合?

java - 使用在其外部线程中更新的arrayList值

java - 不兼容类型错误,Java

java - 不确定这个 Java 代码示例中发生了什么

c++ - 具有两个不同结果的 Rand 函数

java - while(rs1.next()) 不返回任何值