以下是我必须遵循的代码说明,我已经完成了大部分代码,但我似乎缺少使其正确编译的元素。
一个名为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]);
}
}
然后必须将信息打印到结果表中,如下所示:
答案 0 :(得分:1)
编译时你得到的错误是什么?
首先,您的counts
尺寸仅为10,因此counts[i]
不能i
,int 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();
因为我可以大于数组的大小而打破了。
另外,你永远不会改变随机数的值。