Java 测试随机数发生器
我在打印表格中结果的前两列时遇到了问题,但由于我是编程新手,我遇到了一些问题,并且不知道问题在我的代码中的什么地方。简要说明我必须创建:Java 测试随机数发生器,java,arrays,sorting,int,Java,Arrays,Sorting,Int,我在打印表格中结果的前两列时遇到了问题,但由于我是编程新手,我遇到了一些问题,并且不知道问题在我的代码中的什么地方。简要说明我必须创建: 一种无参数的静态int方法,randInt(),它将返回范围0..9内的随机整数。此方法将包括调用Math.random() 一个名为randTest的静态void方法,它接受一个整数参数n。这应执行以下操作: 声明一个名为counts的包含10个元素的整数数组。这将用于记录randInt返回每个可能值的频率 调用randInt n次,每次递增与返回值对应的
- 一种无参数的静态int方法,
,它将返回范围randInt()
内的随机整数。此方法将包括调用0..9
Math.random()
- 一个名为
的静态void方法,它接受一个整数参数n。这应执行以下操作:randTest
- 声明一个名为counts的包含10个元素的整数数组。这将用于记录
返回每个可能值的频率randInt
- 调用randInt n次,每次递增与返回值对应的counts元素的计数
- 以清晰的表格形式将结果打印到控制台。输出应如下所示:
import java.util.Arrays;
public class RandNumGenerator {
public static int RandInt(){
double n = Math.random()*10;
return (int) n;
}
public static void randTest(int n){
int [] counts = new int [10];
for(int i=0;i<n;i++){
counts[i] = RandInt();
System.out.println(counts[i]);
}
}
public static void main(String[] args) {
int sampleSize = 1000;
System.out.println ("Sample Size: " + sampleSize);
String[] intArray = new String[] {"Value","Count","Expected","Abs Diff","Percent Diff"};
System.out.println(Arrays.toString(intArray));
randTest(10);
}
}
导入java.util.array;
公共类随机数发生器{
公共静态int RandInt(){
double n=Math.random()*10;
返回(int)n;
}
公共静态测试(int n){
int[]计数=新的int[10];
对于(inti=0;ipublicstaticvoidrandtest(intn){
您需要思考的问题:这里的参数是什么?提示:不是10…您实际想要做什么
counts[i]=RandInt();
你真的想创建10个随机数并将其存储到数组中吗?不。你想创建“采样”数并将数组增加到正确的位置。正确的位置是什么
counts[correctPosition]=counts[correctPosition]+1;
…如果你能找出正确的位置会更正确
另外,我会将输出从main方法移动到randTest(),在那里你可以把所有东西都放在一起。什么问题?打印不漂亮?错误的数字?根本没有数字?这是否意味着对于randTest()方法,我会将int[]counts=new int[10];更改为int[]counts=new int[n];不是。您想要的结果是一个大小为10的数组,这是正确的。在位置[0]中,您想要存储生成器生成的0的数量。在位置[1]中,您想要给出的是1的数量,等等。在n中,您想要给出的是您想要生成的随机数。那么,正确的索引是什么?您想要增加什么?那么它会是计数吗[0]=counts[RandInt()]+1例如,或者它是counts[0]=counts[0]+1?第二种解决方案让我很困惑,你有你的随机数,比如说int number=RandInt();
。那么,假设这个数字是7,它会在数组中的什么位置?当然,在counts[7]
中。那么,它就是counts[number]=counts[number]+1;
。您希望将您的sampleSize
设置为n
。当我尝试将sampleSize设置为n时,它会显示重复。