У меня есть два дублера, как показано ниже
double min = 100;
double max = 101;
и со случайным генератором мне нужно создать двойное значение между диапазоном min и max.
Random r = new Random();
r.nextDouble();
но здесь нет ничего, где мы могли бы указать диапазон.
double rangeMax= Double.MAX_VALUE;
иdouble rangeMin= -rangeMax;
вы всегда будете получать бесконечное значение взамен. Возможно, вы захотите проверить наличиеDouble.valueOf(rangeMax-rangeMin).isInfinite()
.rangeMin
иrangeMax
велик, то между ними может быть 10 000 000 различных значений типа double. В результате(rangeMax - rangeMin) * r.nextDouble()
будет выбрано только 10 000 из возможных 10 000 000 значений. (Я чувствую , что это не идеальное объяснение, но , возможно , это поможет немного ...)Этот вопрос задавали до выпуска Java 7, но теперь есть другой возможный способ использования API Java 7 (и выше):
double random = ThreadLocalRandom.current().nextDouble(min, max);
nextDouble
вернет псевдослучайное двойное значение между минимальным (включительно) и максимальным (исключительным). Границы не обязательноint
и могут бытьdouble
.источник
Использовать это:
double start = 400; double end = 402; double random = new Random().nextDouble(); double result = start + (random * (end - start)); System.out.println(result);
РЕДАКТИРОВАТЬ:
new Random().nextDouble()
: случайным образом генерирует число от 0 до 1.start
: начальный номер, чтобы сместить номер «вправо»end - start
: интервал. Random дает вам от 0% до 100% этого числа, потому что random дает вам число от 0 до 1.РЕДАКТИРОВАТЬ 2: Tks @daniel и @aaa bbb. Мой первый ответ был неправильным.
источник
import java.util.Random; public class MyClass { public static void main(String args[]) { Double min = 0.0; // Set To Your Desired Min Value Double max = 10.0; // Set To Your Desired Max Value double x = (Math.random() * ((max - min) + 1)) + min; // This Will Create A Random Number Inbetween Your Min And Max. double xrounded = Math.round(x * 100.0) / 100.0; // Creates Answer To The Nearest 100 th, You Can Modify This To Change How It Rounds. System.out.println(xrounded); // This Will Now Print Out The Rounded, Random Number. } }
источник
Random random = new Random(); double percent = 10.0; //10.0% if (random.nextDouble() * 100D < percent) { //do }
источник
Основная идея random заключается в том, что он возвращает псевдослучайное значение. Полностью случайных функций не существует, поэтому 2 экземпляра Random, использующие одно и то же начальное число, в определенных условиях вернут одно и то же значение.
Рекомендуется сначала просмотреть документ функции, чтобы понять его ( https://docs.oracle.com/javase/8/docs/api/java/util/Random.html )
Теперь, когда мы понимаем, что возвращаемое значение функции nextDouble () является псевдослучайным значением от 0,0 до 1,0, мы можем использовать его в наших интересах.
Для создания случайного числа между A и B при условии, что границы действительны (A> B), нам необходимо: 1. найти диапазон между A и B, чтобы мы могли знать, сколько у нас «шагов». 2. используйте случайную функцию, чтобы определить, сколько шагов нужно сделать (поскольку возвращаемое значение находится в диапазоне от 0,0 до 1,0, вы можете думать об этом как о «выборе случайного процента увеличения» 3. добавьте смещение
После всего этого вы можете видеть, что моб дал вам самый простой и самый распространенный способ, на мой взгляд
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble ();
double RandomValue = Offset + (Диапазон) * (randomVal между 0,0–1,0)
источник