1. Как генерировать случайные числа Java
В Java есть три общих понятия случайных чисел.
1. Используйте System.currentTimeMillis (), чтобы получить количество миллисекундов длинного типа в настоящее время.
2. Верните двойное значение от 0 до 1 через математику.random ().
3. Создайте случайное число через случайный класс.
2. Случайное описание API
1. Описание Java API
Экземпляр случайного класса используется для генерации псевдо-рэндового потока числа. В этом классе используются 48-битные семена и изменяют их с помощью линейных формул конгруэнтности (см. Дональд Кнут «Искусство компьютерного программирования», том 2, раздел 3.2.1).
Если два случайных экземпляра создаются с одним и тем же семенем, в каждом экземпляре производится одна и та же последовательность вызовов методов, и они будут генерировать и возвращать одну и ту же последовательность чисел. Чтобы обеспечить реализацию атрибутов, определенный алгоритм указан для случайного класса.
Многие приложения найдут случайный метод в классе математики проще в использовании.
2. Сводка метода
Случайный()
Создайте новый генератор случайных чисел.
Случайно (длинное семя)
Создайте новый генератор случайных чисел, используя одно длинное семя:
Public Random (Long Seed) {SetSeed (SEED);
Защищенный int Далее (int bits)
Создайте следующий псевдо-рэндовый номер.
Boolean Nextboolean ()
Возвращает следующее псевдо-рэндовое число, которое представляет собой равномерно распределенное логическое значение, взятое из последовательности этого генератора случайных чисел.
void nextbytes (байт [] байты)
Сгенерируйте случайные байты и поместите их в поставленную пользователем массив байтов.
Double NextDouble ()
Возвращает следующее псевдо-рэндовое число, которое представляет собой двойное значение, равномерно распределенное между 0,0 и 1,0, взято из последовательности этого генератора случайных чисел.
Float NextFloat ()
Возвращает следующее псевдолупиточное число, которое представляет собой поплавское значение, равномерно распределенное между 0,0 и 1,0, взято из последовательности этого генератора случайных чисел.
Double NextGaussian ()
Возвращает следующее псевдо-рэндовое число, которое представляет собой гауссовое («нормально») распределение, взятое из последовательности этого генератора случайных чисел, со средним уровнем 0,0 и стандартным отклонениями 1,0.
int nextint ()
Возвращает следующее псевдолупительное число, которое представляет собой равномерно распределенное значение int в последовательности этого генератора случайных чисел.
int nextint (int n)
Возвращает псевдолупительное число, которое является значением INT, равномерно распределенного между 0 (включая) и указанное значение (исключая), взятое из последовательности этого генератора случайных чисел.
долго nextlong ()
Возвращает следующее псевдолупительное число, которое представляет собой равномерно распределенное длинное значение, взятое из последовательности этого генератора случайных чисел.
пустого наборов (длинное семя)
Установите семена этого генератора случайных чисел, используя одно длинное семя.
3. Инструкции по использованию случайных классов
1. Разница между переноскими семенами и не переноскими семенами
Фундаментальное использование случайного класса заключается в разделении экземпляров случайных с семенами и без семян.
С точки зрения непрофессионала, разница между ними состоит в:
Для семян результат, генерируемый каждым прогоном, одинаково.
Если у вас нет семян, то, что вы генерируете, случайно каждый раз, когда вы запускаете, и нет никакого рисунка вообще.
2. Создайте случайный объект без семян
Случайный случайный = new Random ();
3. Создайте случайный объект без семян
Есть два способа:
1) случайный случайный = новый случайный (555L);
2) случайный случайный = new Random ();
random.setseed (555L);
4. Комплексное применение
Ниже приведено недавно написанный класс инструментов случайных чисел, чтобы показать использование:
Кода -копия выглядит следующим образом:
импортировать java.util.random;
/**
* Случайное число, струнный инструмент
* Пользователь: Leizhimin
* Дата: 2008-11-19 9:43:09
*/
открытый класс случайные порядок {
Общественная статическая конечная строка AllChar = "0123456789AbcdefghijklmnopqrStuvwxyzabcdefghijklmnopqrstuvwxyz";
Общественная статическая финальная строка itledchar = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
Public Static Final String number chorm = "0123456789";
/**
* Вернуть случайную строку с фиксированной длиной (включая только буквы и числа верхний и нижний регистр)
*
* @param длины случайная длина строки
* @return случайная строка
*/
public Static String Generatestring (int length) {
StringBuffer sb = new StringBuffer ();
Случайный случайный = new Random ();
для (int i = 0; i <length; i ++) {
sb.append (allchar.charat (random.nextint (allchar.length ())));
}
вернуть sb.toString ();
}
/**
* Вернуть фиксированную длину случайную чистую букву буквы (включая только буквы верхнего и нижнего регистра)
*
* @param длины случайная длина строки
* @return случайная строка
*/
Public Static String GenerateMixString (int Length) {
StringBuffer sb = new StringBuffer ();
Случайный случайный = new Random ();
для (int i = 0; i <length; i ++) {
sb.append (allchar.charat (random.nextint (itmerchar.length ())));
}
вернуть sb.toString ();
}
/**
* Вернуть фиксированную длину случайную строку буквы чистой капитала (включая только буквы верхнего регистра)
*
* @param длины случайная длина строки
* @return случайная строка
*/
public Static String GeneratelowerString (int length) {
return generateMixString (длина) .tolowerCase ();
}
/**
* Верните фиксированную длину случайную чистую строчку (включая только прописные и строчные буквы)
*
* @param длины случайная длина строки
* @return случайная строка
*/
public static String GenerateUperString (int length) {
return generatemixstring (длина) .touppercase ();
}
/**
* Сгенерировать строку чистой 0 фиксированной длины 0
*
* @param длины строки
* @return Pure 0 строка
*/
public Static String GeneratezerString (int length) {
StringBuffer sb = new StringBuffer ();
для (int i = 0; i <length; i ++) {
SB.Append ('0');
}
вернуть sb.toString ();
}
/**
* Сгенерируйте строку с фиксированной длиной на основе числа, длина недостаточно, чтобы быть добавленной к предыдущему.
*
* @param Num №
* @param fixdlenth String Длина строки
* @return фиксированная длина строка
*/
public Static String tofixdlengthString (long num, int fixdlenth) {
StringBuffer sb = new StringBuffer ();
String strnum = string.valueof (num);
if (fixdlenth - strnum.length ()> = 0) {
sb.append (GeneratezerString (fixdlenth - strnum.length ()));
} еще {
Бросьте новое runtimeexception («преобразовать номер» + num + »в строку с длиной» + fixdlenth + «Исключение происходит!»);
}
sb.append (strnum);
вернуть sb.toString ();
}
/**
* Сгенерируйте строку с фиксированной длиной на основе числа, длина недостаточно, чтобы быть добавленной к предыдущему.
*
* @param Num №
* @param fixdlenth String Длина строки
* @return фиксированная длина строка
*/
public Static String tofixdlengthString (int num, int fixdletne) {
StringBuffer sb = new StringBuffer ();
String strnum = string.valueof (num);
if (fixdlenth - strnum.length ()> = 0) {
sb.append (GeneratezerString (fixdlenth - strnum.length ()));
} еще {
Бросьте новое runtimeexception («преобразовать номер» + num + »в строку с длиной» + fixdlenth + «Исключение происходит!»);
}
sb.append (strnum);
вернуть sb.toString ();
}
public static void main (string [] args) {
System.out.println (Generatestring (15));
System.out.println (GenerateMixString (15));
System.out.println (GeneratelowerString (15));
System.out.println (GenerateUpperString (15));
System.out.println (GeneratezerString (15));
System.out.println (tofixdlengthstring (123, 15));
System.out.println (tofixdlengthstring (123L, 15));
}
}
Результаты работы:
vwmbpinbzfgcphg
23hyrahdjkkpwmv
tigowetbwkm1nde
Bpz1knejphb115n
00000000000000000000
00000000000000123
00000000000000123
Процесс завершен с кодом выхода 0
6. Резюме
1. Случайные числа очень часто используются.
2. Случайные классовые объекты имеют разницу между тем, несут ли они семена.
3. Есть два способа создания семян -объектов со случайными числами, с тем же эффектом. Но случайные числа с семенами, похоже, не имеют особого использования.
4. Функции случайного охватывают функции Math.random ().
5. Вы можете использовать случайные числа для реализации сложных случайных данных, таких как случайные строки.
6. Не изучайте случайные числа, которые не повторяются, это не очень значимо.
Дополнительный код:
Кода -копия выглядит следующим образом:
пакет com.test;
импортировать java.util.random;
открытый класс случайные порядок {
Общественная статическая конечная строка AllChar = "0123456789AbcdefghijklmnopqrStuvwxyzabcdefghijklmnopqrstuvwxyz";
публичная статическая финальная строка itledchar = "abcdefghijkllmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
Public Static Final String number chorm = "0123456789";
/**
* Вернуть случайную строку с фиксированной длиной (включая только буквы и числа верхний и нижний регистр)
* @param длины случайная длина строки
* @return случайная строка
*/
Общественная статическая строка
{
StringBuffer sb = new StringBuffer ();
Случайный случайный = new Random ();
для (int i = 0; i <length; i ++) {
sb.append (allchar.charat (random.nextint (allchar.length ())));
}
вернуть sb.toString ();
}
/**
* Вернуть фиксированную длину случайную чистую букву буквы (включая только буквы верхнего и нижнего регистра)
* @param длины случайная длина строки
* @return случайная строка
*/
Public Static String GenerateMixString (int длина)
{
StringBuffer sb = new StringBuffer ();
Случайный случайный = new Random ();
для (int i = 0; i <длины; i ++)
{
sb.append (allchar.charat (random.nextint (itmerchar.length ())));
}
вернуть sb.toString ();
}
/**
* Вернуть фиксированную длину случайную строку буквы чистой капитала (включая только буквы верхнего регистра)
*
* @param длины случайная длина строки
* @return случайная строка
*/
public Static String GeneratelowerString (int length) {
return generateMixString (длина) .tolowerCase ();
}
/**
* Верните фиксированную длину случайную чистую строчку (включая только прописные и строчные буквы)
*
* @param длины случайная длина строки
* @return случайная строка
*/
public static String GenerateUperString (int length) {
return generatemixstring (длина) .touppercase ();
}
/**
* Сгенерировать строку чистой 0 фиксированной длины 0
*
* @param длины строки
* @return Pure 0 строка
*/
public Static String GeneratezerString (int length) {
StringBuffer sb = new StringBuffer ();
для (int i = 0; i <length; i ++) {
SB.Append ('0');
}
вернуть sb.toString ();
}
/**
* Сгенерируйте строку с фиксированной длиной на основе числа, длина недостаточно, чтобы быть добавленной к предыдущему.
*
* @param Num №
* @param fixdlenth String Длина строки
* @return фиксированная длина строка
*/
public Static String tofixdlengthString (long num, int fixdlenth) {
StringBuffer sb = new StringBuffer ();
String strnum = string.valueof (num);
if (fixdlenth - strnum.length ()> = 0) {
sb.append (GeneratezerString (fixdlenth - strnum.length ()));
} еще {
Бросьте новое runtimeexception («преобразовать номер» + num + »в строку с длиной» + fixdlenth + «Исключение происходит!»);
}
sb.append (strnum);
вернуть sb.toString ();
}
/**
* Сгенерируйте строку с фиксированной длиной на основе числа, длина недостаточно, чтобы быть добавленной к предыдущему.
*
* @param Num №
* @param fixdlenth String Длина строки
* @return фиксированная длина строка
*/
public Static String tofixdlengthString (int num, int fixdletne) {
StringBuffer sb = new StringBuffer ();
String strnum = string.valueof (num);
if (fixdlenth - strnum.length ()> = 0) {
sb.append (GeneratezerString (fixdlenth - strnum.length ()));
} еще {
Бросьте новое runtimeexception («преобразовать номер» + num + »в строку с длиной» + fixdlenth + «Исключение происходит!»);
}
sb.append (strnum);
вернуть sb.toString ();
}
/**
* Количество цифр LEN, сгенерированные каждый раз, отличается
* @param param
* @return Количество фиксированной длины
*/
Public Static int getNotsImple (int [] param, int len)
{
Случайный rand = new Random ();
для (int i = param.length; i> 1; i--)
{
int index = rand.nextint (i);
int tmp = param [index];
param [index] = param [i - 1];
param [i - 1] = tmp;
}
int result = 0;
для (int i = 0; i <len; i ++)
{
Результат = Результат * 10 + PARAM [i];
}
результат возврата;
}
public static void main (string [] args) {
System.out.println (Generatestring (10));
System.out.println (GenerateMixString (10));
System.out.println (GeneratelowerString (10));
System.out.println (GenerateUpperString (10));
System.out.println (GeneratezerString (10));
System.out.println (tofixdlengthstring (123, 10));
System.out.println (tofixdlengthstring (123L, 10));
int [] in = {1,2,3,4,5,6,7};
System.out.println (getNotsImple (in, 3));
}
}