2016-09-10 198 views
0

我的赋值:生成随机数,每次给予相同数量的

一个简单的随机发生器由式= (⋅ +)%获得。然后通过将 设置为并重复该过程来产生新的“随机”数字。写一个方法 ,要求用户输入,,和的值。您的 方法应该返回一个整数数组,其中包含该公式生成的前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 

[[email protected] 

能有人帮我解决这个问题?

+2

您还没有实现这一步:'新的“随机”的数字,然后通过设置和重复 –

+0

你没有实现process.'生成它的它在说明中要求的方式。再次阅读并调查您的代码以解决问题。输出是一个死的赠品。 – ChiefTwoPencils

+0

所以我修复了我的代码 – Mary

回答

1

传递一个数组到System.out.println()会打印出数组的“内存地址”。因为您正在使用相同的R用同样的公式25倍

System.out.println(Arrays.toString(random(r,a,b,m))); 
1
  1. 你得到25个相同的数字是:您可以使用Arrays.toString()得到的数组内容格式良好的String

取而代之的是,根据分配要求,应该将r更新为新生成的随机数,并用它来生成下一个随机数!

  • 应该使用一个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]); 
        } 
    }