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()

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

  • 声明一个名为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;i
publicstaticvoidrandtest(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时,它会显示重复。