2016-09-10 153 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]); 
        } 
    }