2016-11-13 1 views
-6

у меня есть:случайное число в диапазоне от 50% до 150%

private Random rng = new Random(); 

double random = rng.nextDouble(1.5-0.5) + 0.5; 

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

+2

«Он бросает я ошибка "не является полезным описанием. Пожалуйста, включите след стека исключений в свои вопросы! – GhostCat

+0

Если вы исправите ошибку, она, вероятно, сработает. – Kayaman

+0

Добро пожаловать в переполнение стека! Ознакомьтесь с нашим [Контрольным списком вопросов] (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist), чтобы помочь вам задать хороший вопрос и, таким образом, получить хороший ответ. –

ответ

1

Ваша проблема: вы должны прочитать javadoc. Значение: dont предположим, что некоторый библиотечный метод что-то делает; вместо этого: прочитайте документацию, чтобы убедиться, что ваши предположения верны.

В этом случае проверьте Double.nextDouble ... и найти:

Возвращает следующий псевдохаотическом равномерно распределенную двойное значение в диапазоне от 0,0 до 1,0 от последовательности этого случайного числа генератора.

Пункт: есть нет метод следующийDouble(), который принимает двойной аргумент! Существует только один, который идет без каких-либо аргументов; и этот метод по умолчанию возвращает значение от 0 до 1.

Итак, просто измените свой код, чтобы вызвать этот метод без каких-либо аргументов!

-1

Вы можете сделать что-то вроде 50% и 100%

public static void main(final String[] args) { 
    Random rng = new Random(); 
    double random = rng.nextDouble(); 

    if (random <= 0.5) { 
     System.out.println("50% " + random); 
    } else { 
     System.out.println("100% " + random); 
    } 
} 
1

Это происходит потому, что nextDouble не принимает параметры, и возвращать только двойной между 0,0 и 1,0. Используйте следующее:

Random rng = new Random(); 

double max = 1.5; 
double min = 0.5; 
double random = rng.nextDouble(); // Double between 0.0 and 1.0 

double percentage = random*(max-min) + min; 
System.out.println(percentage); 
1

Если вы читали ошибку в язя или просто посмотреть на Java документ вы будете четко видеть причины ...

метод nextDouble() в типе Random не применяется для аргументов (двойных)

случайного класс не имеет такой метода nextDouble(), который принимает двойной в качестве аргумента

Кстати, почему вы не просто сгенерировать случайное число от 50 до 150 ... что бы больше смысла для реализации вы желаете ...

что-то вроде

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