2016-09-10 4 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

Вы не выполнили этот шаг: 'Новое«случайное»число, то генерируется путем установки в и повторяя process.' –

+0

Вы не реализован его который он требует в инструкциях. Прочтите их еще раз и изучите свой код для проблемы. Выходные данные являются мертвой поддавки. – ChiefTwoPencils

+0

Итак, я исправил свой код – Mary

ответ

1

Передача массива в System.out.println() будет распечатывать «адрес памяти» массива. Вы можете использовать Arrays.toString(), чтобы получить хорошо отформатированный String содержимого массива:

System.out.println(Arrays.toString(random(r,a,b,m))); 
1
  1. Вы получаете 25 те же номера, потому что вы используете один и тот же г, для одной и той же формуле 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]); 
    } 
} 
Смежные вопросы