randTest()方法,它将一个int n作为参数

时间:2015-07-27 19:28:56

标签: java random count int increment

以下是我必须遵循的代码说明,我已经完成了大部分代码,但我似乎缺少使其正确编译的元素。

一个名为randTest的静态void方法,它接受一个整数参数n。这应该执行以下操作:

  • 声明一个包含10个名为counts的元素的int数组。这将用于记录randInt返回每个可能值的频率。

  • 调用randInt n次,每次递增与返回值对应的计数元素的计数。

    public static void randTest(int n){
    int [] counts = new int [10];
    int sampleSize = 10000;
    //int n = sampleSize;
    int RandNum = RandInt();
    
    System.out.println ("Sample Size: " + sampleSize);
    String[] intArray = new String[] {"Value","Count","Expected","Abs Diff","Percent Diff"};
    System.out.println(Arrays.toString(intArray));
    
    
    
    for(int i=0;i<10000;i++){
        counts[ RandNum ] = counts[ RandNum ] + 1;
        counts[i] = RandInt();
        System.out.println(counts[n]);
        } 
    }
    

然后必须将信息打印到结果表中,如下所示:

enter image description here

3 个答案:

答案 0 :(得分:1)

编译时你得到的错误是什么?

首先,您的counts尺寸仅为10,因此counts[i]不能iint n最多可达10,000。

您已注释掉System.out.println(counts[n]);,因此您无法int RandNum = RandInt();

counts,您必须对此进行限制或更改,因为{{1}}只有10级。

答案 1 :(得分:0)

您正在递增计数,但为什么要更改计数[i]之后的值?您还需要每次通过for循环获取一个新的随机数:

for(int i=0;i<10000;i++){
    int randomNum = rand.nextInt(10);
    counts[ randomNum ] = counts[ randomNum ] + 1;
    } 
}

答案 2 :(得分:0)

我认为问题来自for

public static void randTest(int n){
  int [] counts = new int [10];

  String[] intArray = new String[] {"Value","Count","Expected","Abs Diff","Percent Diff"};
  System.out.println(Arrays.toString(intArray));



  for(int i=0;i<10000;i++){
    int randomNumber = RandInt();
    counts[ randomNumber ] = counts[ randomNumber ] + 1;
    System.out.println("Added one to value : " + randomNumber);
  } 
}

你有counts[i] = RandInt();因为我可以大于数组的大小而打破了。 另外,你永远不会改变随机数的值。