2015-11-12 11 views
1

У меня есть этот кодгенерации случайного дабл от 0 до бесконечности в Java

и я пытаюсь отправить случайный двойной методу «забавной»

BL двойная равна 1 здесь

double inf=Double.POSITIVE_INFINITY; 
    double rand=inf*R.nextDouble(); 
    double myrand=fun(rand)*BL; 
    mylist.get(i).set_speed(myrand); 

и здесь «удовольствие» метод

double fun(double v) 
{ 
    return ((pow(A,K)*exp((-1)*A*v)*pow(v,K-1))/(fact(K-1))); 
} 

Но выход скорости параметр ALW ays NaN

+0

Бесконечность определена в IEEE 754; однако это не означает, что это значение бесконечности. См. [Википедия о двойной точности IEEE 754] (https://en.wikipedia.org/wiki/Double-precision_floating-point_format) –

+3

Не будет умножать бесконечность вашим случайно сгенерированным двойным, всегда делает значение бесконечности? Разве это не побеждает случайную цель? –

+0

Бесконечность числа всегда бесконечно –

ответ

1

Попробуйте изменить эту строку inf*R.nextDouble(); для Double.MAX_VALUE * R.nextDouble(); Если вы также должны получить Double.POSITIVE_INFINITY время от времени, то вам должны выполнить дополнительный блок if и случайным образом вернуть Double.POSITIVE_INFINITY в некоторых случаях.

2

Насколько я знаю, бесконечность не достижима двойным. Попробуйте это вместо

double rand = R.nextDouble(Double.MAX_VALUE- 1); 

Это создаст случайный двойником между 0 и максимальным значением для двойной

+2

nextDouble(); не принимать параметры –

1

Чтобы получить двойное значение с положительным знаком, превышающим или равным 0,0 и меньше, чем Double.MAX_VALUE:

double r = Math.random()*Double.MAX_VALUE 

Тогда просто передать результат вашей функции.

+0

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

+1

Нет, потому что 'Math.random()' всегда возвращает число от 0 до 1. – Clashsoft

+0

А, хорошо знать. Ну, @ Leet-Falcon, я не могу удалить свой downvote, если вы не отредактируете свой пост. –

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

  • Нет связанных вопросов^_^