【问题标题】:Testing a random number generator测试随机数生成器
【发布时间】:2015-08-19 19:44:33
【问题描述】:

我无法在表格中打印出结果的前两列,但由于我是编程新手,所以我遇到了问题,想知道问题出在我的代码中。简要说明我必须创建:

  • 一个无参数的静态 int 方法 randInt(),它将返回一个在 0..9 范围内的随机整数。此方法将包括对Math.random() 的调用。

  • 名为 randTest 的静态 void 方法采用单个整数参数 n。这应该执行以下操作:

  • 声明一个包含 10 个名为 counts 的元素的 int 数组。这将用于记录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 arrays sorting int


【解决方案1】:

public static void randTest(int n){

你要思考的问题:这里的参数是什么?提示:不是 10...n 次你到底想做什么?

counts[i] = RandInt();

您真的想创建 10 个随机数并将它们存储到数组中吗?没有。您想创建“sampleSize”数字并在正确的位置增加数组。正确的位置是什么?

counts[ correctPosition ] = counts[ correctPosition ] + 1;

...如果你能找出正确的位置,会更正确。

此外,我会将输出从 main 方法移动到 randTest() ,在那里您可以将所有内容放在一起。

【讨论】:

  • 这是否意味着对于 RandTest () 方法我会更改 int [] counts = new int [10]; to int [] counts = new int [n];
  • 没有。结果你想要的是一个大小为 10 的数组,这是正确的。在位置 [0] 中,您要存储生成器生成的 0 数量。在位置 [1] 中,1 的数量等。您要在 n 中给出的是您要生成的随机数的数量。那么,什么是正确的索引?你想增加什么?
  • 那么是 counts [0] = counts [RandInt()] + 1 还是 counts [0] = counts [0] + 1 ?第二种解决方案让我很困惑
  • 不,你有你的随机数,比如说int number = RandInt();。那么,假设这个数字是 7,它会在数组中的哪个位置出现?当然是counts[7]。所以,它将是counts[number] = counts[number]+1;。你想给你的sampleSizen
  • 当我尝试将 sampleSize 设为 n 时,它说重复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
相关资源
最近更新 更多