【问题标题】:Generating random numbers giving the same number each time每次生成相同数字的随机数
【发布时间】:2016-09-10 00:55:59
【问题描述】:

我的任务:

通过公式???????????????? = (???? ⋅ ???????????????? + ????)%???? 得到一个简单的随机生成器。然后通过设置生成新的“随机”数字 ???????????????????????????????? 并重复该过程。写一个方法 要求用户输入 ????????????????, ????, ????和 ????。您的 方法应该返回一个包含前 25 个整数的数组 此公式生成的“随机”值。

到目前为止,这就是我所拥有的,但由于某种原因,我的代码没有打印随机 25 个数字的数组

public static void main(String[] args){
        Scanner theInput = new Scanner(System.in);
        System.out.println("Enter a value for r: ");
        int r = theInput.nextInt();
        System.out.println("Enter a value for a: ");
        int a = theInput.nextInt();
        System.out.println("Enter a value for b: ");
        int b = theInput.nextInt();
        System.out.println("Enter a value for m: ");
        int m = theInput.nextInt();

        System.out.println(random(r,a,b,m));

    }

    public static int[] random(int r, int a, int b, int m){
        String num = "";
        int numberArray[] = new int [25];
        for (int i = 0; i < numberArray.length; i++) {
            int answer = (a*r+b)%m;
            numberArray [i] = answer;
        }
        for(int i=0;i<numberArray.length;i++){
            System.out.println(numberArray[i]);
        }
        System.out.println();
        return numberArray; 
    }

这是正在打印的内容:

258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258
258

[I@55f96302

谁能帮我解决这个问题?

【问题讨论】:

  • 你还没有实现这一步:New “random” numbers are then generated by setting ???????????????? to ???????????????? and repeating the process.
  • 您没有按照说明中要求的方式实现它。再次阅读它们并调查您的代码以解决问题。输出是一个死的赠品。
  • 所以我修复了我的代码
  • public static int[] random(int r, int a, int b){ String num = ""; int numberArray[] = new int [25]; for (int i = 0; i
  • 但它一直在打印数组的内存地址。有没有办法解决这个问题?

标签: java


【解决方案1】:

将数组传递给System.out.println() 将打印出数组的“内存地址”。您可以使用Arrays.toString() 获得格式良好的String 数组内容:

System.out.println(Arrays.toString(random(r,a,b,m)));

【讨论】:

    【解决方案2】:
    1. 您得到 25 个相同的数字是因为您对相同的公式使用了相同的 r 25 次!

    相反,根据赋值要求,应该将r更新为新生成的随机数,并用它来生成下一个随机数!

    1. 您应该使用 for 循环而不是 System.out.println(numberArray) 来打印数组,有关详细说明,请参阅 this

    供您参考:

    public static int[] random(int r, int a, int b, int m) {
        String num = "";
        int numberArray[] = new int [25];
        for (int i = 0; i < numberArray.length; i++) {
            int answer = (a * r + b) % m;
            numberArray [i] = answer;
            r = answer;                // you should set r as the answer and use it for the next random number
        }
        return numberArray;
    }
    
    public static void main(String[] args) {
    
        Scanner theInput = new Scanner(System.in);
        System.out.println("Enter a value for r: ");
        int r = theInput.nextInt();
        System.out.println("Enter a value for a: ");
        int a = theInput.nextInt();
        System.out.println("Enter a value for b: ");
        int b = theInput.nextInt();
        System.out.println("Enter a value for m: ");
        int m = theInput.nextInt();
    
        int[] numberArray = random(r, a, b, m);
    
        for(int i = 0; i < numberArray.length; i++){
            System.out.println(numberArray[i]);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2011-05-06
      • 1970-01-01
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多