Случайный класс (java.util)
Случайный алгоритм, реализованный в случайном классе,-это псевдолупольный, то есть случайный с правилами. При выполнении рандомизации количество происхождения случайного алгоритма называется семенами, что выполняет определенное преобразование на основе семян, тем самым генерируя необходимые случайные числа.
Случайные объекты с одинаковым количеством семян, случайные числа, генерируемые одинаковым количеством раз, точно одинаковы. Другими словами, для двух случайных объектов с одним и тем же числом семян случайные числа, сгенерированные в первый раз, точно одинаковы, а случайные числа, сгенерированные во второй раз, точно одинаковы. Это требует особого внимания при генерации нескольких случайных чисел.
В следующем описывается использование случайного класса, а также как генерировать случайный массив указанных интервалов и шансы, необходимые в программе реализации.
1. Генерация случайных объектов
Случайный класс содержит два конструктора, которые представлены в последовательности ниже:
а Public Random ()
В этом методе конструкции используется число, связанное с относительным временем, соответствующим текущему системному времени в качестве числа семян, а затем использует этот номер семян для построения случайного объекта.
беременный публичный случайный (длинные семени)
Этот конструктор может быть создан путем формулирования числа семян.
Пример кода:
Кода -копия выглядит следующим образом:
Случайный r = new Random ();
Случайный R1 = новый случайный (10);
Опять же: количество семян - это лишь количество происхождения случайного алгоритма и не имеет ничего общего с интервалом сгенерированных случайных чисел.
2. Общие методы в случайном классе
Методы в случайном классе относительно просты, и функции каждого метода также легко понять. Следует отметить, что случайные числа, генерируемые каждым методом в случайном классе, равномерно распределены, что означает, что вероятность численной генерации в интервале равен. Вот основное введение в эти методы:
а Public Boolean Nextboolean ()
Функция этого метода состоит в том, чтобы генерировать случайное логическое значение, а вероятность генерации истинных и ложных значений равна, то есть оба составляют 50%.
беременный public DoubledeDuble ()
Цель этого метода состоит в том, чтобы генерировать случайное двойное значение со значением между [0, 1,0).
c, public int nextint ()
Цель этого метода состоит в том, чтобы генерировать случайное значение int, которое находится между -231 и 231-1.
Если вам нужно генерировать значение Int для указанного интервала, вам необходимо выполнить определенное математическое преобразование. Для получения подробной информации, пожалуйста, обратитесь к коду в примере использования ниже.
D, public int nextint (int n)
Функция этого метода состоит в том, чтобы генерировать случайное значение int, которое находится в интервале [0, N), то есть случайное значение int между 0 и n, содержащее 0, но не n.
Если вы хотите генерировать значение Int для указанного интервала, вам также необходимо выполнить определенное математическое преобразование. Для получения подробной информации, пожалуйста, обратитесь к коду в примере использования ниже.
E, Публичный пустотный набор (длинное семя)
Цель этого метода - сбросить количество семян в случайном объекте. После установки количества семян случайный объект такой же, как и случайный объект, созданный с новым ключевым словом.
3. Пример использования случайного класса
Используя случайный класс, это обычно для генерации случайных чисел для указанного интервала. Следующее представит, как генерировать случайные числа для соответствующего интервала один за другим. Следующие коды, которые генерируют случайные числа, генерируются с использованием следующего случайного объекта r:
Случайный r = new Random ();
а Генерировать десятичные дскаимы интервала [0, 1,0)
Кода -копия выглядит следующим образом:
double d1 = r.nextdouble ();
Он получается непосредственно с использованием следующего метода.
беременный Генерировать десятичные дскаимы интервала [0,5,0)
Кода -копия выглядит следующим образом:
double d2 = r.nextdouble () * 5;
Поскольку чисел интервал, сгенерированный следующим, составляет [0, 1,0), расширение интервала в 5 раз - это необходимый интервал.
Точно так же, чтобы генерировать случайный десятичный десятичный язык в интервале [0, D) и D является любого положительного десятичного десятичного, вам нужно только умножить возвращаемое значение следующего метода на D.
в Генерировать десятичные дску в интервале [1,2,5)
Кода -копия выглядит следующим образом:
double d3 = r.nextdouble () * 1,5 + 1;
Чтобы генерировать случайный десятичный десятичный интервал [1, 2,5), вам нужно только сначала генерировать случайное количество интервала [0, 1,5), а затем добавить 1 в сгенерированный интервал случайного числа.
Точно так же, чтобы генерировать любое случайное число в диапазоне десятичного интервала [D1, D2), которое не начинается с 0 (где D1 не равен 0), вам нужно только сначала генерировать случайное число в интервале [0, D2-D1), а затем добавить сгенерированный интервал случайного числа в D1.
дюймовый Генерировать любое целое число
Кода -копия выглядит следующим образом:
int n1 = r.nextint ();
Просто используйте метод Nextint напрямую.
эн. Генерировать целые числа в интервале [0,10)
Кода -копия выглядит следующим образом:
int n2 = r.nextint (10);
n2 = math.abs (r.nextint () % 10);
Вышеуказанные две строки кода могут генерировать целые числа в интервале [0,10).
Первая реализация напрямую реализуется с использованием метода NextInt (int N) в случайном классе.
Во второй реализации метод First Call NextInt () для создания произвольного числа Int. Интервал, сгенерированный численной суммой 10, составляет (-10,10), а затем обнаружил абсолютное значение интервала, а полученный интервал составляет [0,10).
Точно так же, чтобы генерировать случайные целые числа в любом интервале [0, n) вы можете использовать следующий код:
Кода -копия выглядит следующим образом:
int n2 = r.nextint (n);
n2 = math.abs (r.nextint () % n);
фон Генерировать целые числа в интервале [0,10]
Кода -копия выглядит следующим образом:
int n3 = r.nextint (11);
n3 = math.abs (r.nextint () % 11);
По сравнению с целочисленным интервалом интервал [0,10] и интервал [0,11) эквивалентны, поэтому генерируется целое число [0,11) интервала.
глин Генерировать целые числа в интервале [-3,15)
Кода -копия выглядит следующим образом:
int n4 = r.nextint (18) - 3;
n4 = math.abs (r.nextint () % 18) - 3;
Чтобы сгенерировать случайные целые числа, которые не начинаются с 0, вы можете ссылаться на приведенное выше описание принципа реализации десятичного интервала, который не начинается с 0.
h, шанс достичь
Реализация логики программы в соответствии с определенным шансом также является проблемой, которая может быть решена с помощью случайной обработки. Вот простой пример, чтобы продемонстрировать, как реализовать логику случайности с использованием случайных чисел.
Во введении предыдущего метода числа, генерируемые в методе Nextint (int n), являются однородными, то есть шансы на генерацию каждого числа в интервале одинаковы. Тогда, если генерируется случайное целое число в интервале [0,100), шансы на сгенерированное число должно быть одинаковым, и, поскольку в интервале есть 100 целых чисел, шансы каждого числа составляют 1%. Согласно этой теории, проблема вероятности в программе может быть реализована.
Пример: случайным образом генерируйте целое число, которое генерирует 1 с вероятностью 55%, 2 с вероятностью 40% и 3 с вероятностью 5%. Реализованный код выглядит следующим образом:
Кода -копия выглядит следующим образом:
int n5 = r.nextint (100);
int m; // номер результата
if (n5 <55) {// интервал 55 чисел, 55% шанс
m = 1;
} else if (n5 <95) {// [55,95), интервал 40 чисел, 40% шанс
m = 2;
}еще{
m = 3;
}
Поскольку вероятность каждого числа составляет 1%, вероятность любого 55 -значного интервала составляет 55%. Для удобства написания кода здесь используются все целые числа в интервале [0,55), а последующий принцип одинаково.
Конечно, код здесь может быть упрощен, потому что шансы имеют множество 5%, поэтому просто контролируйте шансы на основе 5%. Ниже приведена упрощенная реализация кода:
Кода -копия выглядит следующим образом:
int n6 = r.nextint (20);
int m1;
if (n6 <11) {
m1 = 1;
} else if (n6 <19) {
m1 = 2;
}еще{
m1 = 3;
}
Внутри программы логика вероятности может быть реализована в соответствии с вышеуказанными инструкциями.
4. Другие проблемы
а Проблема случайного объекта с тем же номером семян
Как упоминалось ранее, случайные объекты с одинаковым количеством семян имеют одинаковые случайные числа, сгенерированные тем же количеством раз. Ниже приведен тестовый код:
Кода -копия выглядит следующим образом:
Случайный R1 = новый случайный (10);
Случайный R2 = новый случайный (10);
для (int i = 0; i <2; i ++) {
System.out.println (r1.nextint ());
System.out.println (r2.nextint ());
}
В этом коде количество семян, используемых объектами R1 и R2, составляет 10, поэтому случайные числа, сгенерированные тем же количеством раз, точно одинаковы.
Если вы хотите избежать ситуации, когда случайные числа одинаковы, вам нужно отметить, что независимо от того, сколько случайных чисел вам нужно генерировать в проекте, вы можете использовать только один случайный объект.
беременный О случайном методе в классе математики
На самом деле, есть также случайный метод в классе математики. Задача этого случайного метода состоит в том, чтобы генерировать случайный десятичный десятичный размер [0, 1,0).
Читая исходный код класса математики, мы можем обнаружить, что случайный метод в математическом классе реализован путем непосредственного вызова следующего метода в случайном классе.
Просто случайный метод называется относительно простым, поэтому многие программисты привыкли использовать случайный метод математического класса для генерации случайных чисел.