2014-09-23 3 views
0

У меня есть массив, который может содержать 5 целых чисел. В цикле for я использую Math.random(), чтобы заполнить массив случайными целыми значениями от 0 до 10, которые могут быть положительными или отрицательными. Как я могу получить отрицательное значение? Кто-то рекомендовал мне умножить на -1 формулу, чтобы заполнить массив положительными и отрицательными значениями, но когда я делаю это, все мои значения в массиве отрицательные. Я думаю, что проблема в этой строкеКак получить случайное значение, которое может быть положительным или отрицательным?

int r = 0 + (int) (Math.random() * 10 *(-1)); 

Это код:

public class Random 
{ 

public static void main(String [] args) 
{ 
    int [] arr= new int[5]; 


    for(int k=0; k<arr.length; k++) 
    { 
      int r = 0 + (int) (Math.random() * 10 *(-1)); 
      arr[k] = r; 
    } 

    int j = 0; 
    while(i<arr.length) { 
     System.out.print(arr[i] + " "); 
     j++; 
    } 

} 
} 


Сейчас мой выход -7 -3 -3 -5 -6

Я хочу, чтобы мой выход был 7 -3 3 -5 6

+0

Попробуйте 'обр [к] = г * ((Math. random()> 0.5)? 1: -1) ', чтобы добавить случайное значение к отрицательному/положительному. Или вы можете переместить диапазон случайного интервала (ответ Эрана) – Daniel

ответ

3

Если вы хотите, чтобы номера между -10 и 10:

int r = (int) (Math.random() * 21) - 10; 

Поскольку Math.random() никогда не возвращает 1,0, (int) (Math.random() * 21) будет возвращать целые числа от 0 до 20, а после вычитая 10, вы получите то, что вы хотите.

В качестве альтернативы можно использовать java.util.Random:

Random rand = new Random(); 
int r = rand.nextInt(21) - 10; 
+0

Вероятно, следует использовать Math.round вместо того, чтобы всегда округлять вниз (кастинг как int) – ControlAltDel

0

Можно произвести случайное число в диапазоне от 0 до 20 и вычесть 10 из него. Делая это, вы WIIL получить случайное число в диапазоне от -10 до +10:

int r = (int) (Math.random() * 20) - 10; 
0

Вам просто нужно изменить код, как показано ниже

public class Random 
    { 

     public static void main(String[] args) { 
      int[] arr = new int[5]; 

      for(int k=0; k<arr.length; k++) 
      { 
       int r = 0 +(int)(Math.random()*10*(k % 2 == 0? 1:-1)); 
       arr[k] = r; 
      } 
      int j = 0; 
      while(j<arr.length) 
      { 
       System.out.print(arr[j]+ " "); 
       j++; 

      } 
      System.out.println(); 
     } 

    } 
Смежные вопросы