2014-09-11 1 views
-3

Прямо сейчас, он делает число выше 50 положительных и цифры ниже 50 отрицательных. Как мне изменить код, чтобы сделать его таким, чтобы любое число могло быть положительным или отрицательным?Что я должен изменить, чтобы сделать произвольное сгенерированное число положительным или отрицательным?

public class P1G 
{ 
    static void main() 
    { 
     int[] a = new int[10]; 
     for(int index = 0; index < 10; index ++) 
     { 
      double r = Math.random(); 
      int p = (int) (((100 - 0) + 1) * r + 0); // (-) or (+) 
      if (p < 50) 
      { 
       int n = (int) (((100 - 0) + 1) * r + 0); 
       n = n * -1; 
       System.out.println(n); 
      } 
      else 
      { 
       int n = (int) (((100 - 0) + 1) * r + 0); 
       n = n; 
       System.out.println(n); 
      } 
     } 
    } 
} 
+0

Вы написали этот код? Если бы вы написали это и знали, как сделать его положительным в некоторых случаях и отрицательным в других, вы должны быть в состоянии выяснить ответ на свой вопрос ... что-то пахнет рыбным. Вы уверены, что это не домашнее задание? –

+0

@KevinL Math.random() дает вам положительное число. Теперь, как вы хотите решить, печатать ли положительное или отрицательное число? –

+0

Я особенно люблю ((100 - 0) + 1), который дублируется 3 раза - наверняка это можно установить как константу. ;-) –

ответ

0

Можете ли вы просто использовать это?

new Random().nextInt(50)-100 

О, извините, сделайте большую неосторожную ошибку.

new Random().nextInt(100) - 50 
+0

Я не уверен, что понимаю его смысл, он хочет, чтобы диапазон от -50 до 50 вправо? –

+2

Нет, вы не можете - это даст значение от -100 до -50. Другой ответ имеет это правильно. –

+0

Извините, ответьте слишком быстро и совершите ошибку: D –

0

Вместо РАНДОМИЗАЦИЯ над [0,101], вы можете случайным образом над [-50, 50], выполнив следующие действия:

int p = (int) (100 * r - 50); 
1

Если я не хватает чего-то вы хотите

int n = (int) (Math.random() * 101) - 50; 
System.out.println(n); 

Объяснение

Получить в диапазоне от 0 случайного int 100 и вычитают 50, что дает диапазон от -50 до положительного 50. За Math.random() в Javadoc -

Возвращает значение double с положительным знаком, больше или равно 0,0 и менее 1,0.

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