Статьи
Форум
Q&A
Полезные коды
Войти
Регистрация
Привет, Гость!
Войти
Войти с VK
Войти с Google
Регистрация
Информация
Вопросы и ответы
Вопрос
-1 голос
530 просмотров
15.12.2018 / 11:56
Death
Генерация случайного числа по ключу
Random
rnd
key
java
Есть ли в java по дефолту класс для генерации числа по ключу?
Класс java.utill.Random не подойдёт.
Нужно, что-то, типо этого:
[копировать]
[скачать]
RandomKey rnd
=
new
RandomKey
(
1
)
;
Int i1
=
rnd
.
nextInt
(
min
,
2
,
max
)
;
//i1 = 5, min = 0, max = 100, 2 - ключ
Int i2
=
rnd
.
nextInt
(
min
,
5
,
max
)
;
//i2 = 34
Int i3
=
rnd
.
nextInt
(
min
,
2
,
max
)
;
//i3 = 5
Если при создании объекта рандома указать семя другое, не один, то и сгенерированные числа буду отличаться, но по ключу - схожи.
Изм.
Death
от 15.12.2018 / 11:56
15.12.2018 / 12:07
RblSb
Почему не подойдет?
15.12.2018 / 12:12
Витаминыч
Ну так напиши
Ответы
2 голоса
#
15.12.2018 / 22:00
aNNiMON
То, что ты назвал ключом ничем не отличается от второго сида. Просто придумай алгоритм, как объединить seed1 и seed2 так, чтобы при seed1 = x и seed2 = y всегда были одни и те же значения. Самый простой метод xor: seed1 ^ seed2.
[копировать]
[скачать]
import
java.util.Random
;
public
class
RandomKey
extends
Random
{
private
final
long
seed
;
public
RandomKey
(
long
seed
)
{
super
(
seed
)
;
this
.
seed
=
seed
;
}
public
int
nextInt
(
int
min,
long
key,
int
max
)
{
super
.
setSeed
(
seed
^
key
)
;
return
min
+
nextInt
(
max
-
min
+
1
)
;
}
public
static
void
main
(
String
[
]
args
)
{
final
int
min
=
0
, max
=
100
;
final
RandomKey rnd1
=
new
RandomKey
(
1
)
;
System.
out
.
format
(
"Key %d: %d%n"
,
2
, rnd1.
nextInt
(
min,
2
, max
)
)
;
// 36
System.
out
.
format
(
"Key %d: %d%n"
,
5
, rnd1.
nextInt
(
min,
5
, max
)
)
;
// 88
System.
out
.
format
(
"Key %d: %d%n"
,
2
, rnd1.
nextInt
(
min,
2
, max
)
)
;
// 36
final
RandomKey rnd2
=
new
RandomKey
(
3228
)
;
System.
out
.
format
(
"Key %d: %d%n"
,
2
, rnd2.
nextInt
(
min,
2
, max
)
)
;
// 40
System.
out
.
format
(
"Key %d: %d%n"
,
5
, rnd2.
nextInt
(
min,
5
, max
)
)
;
// 9
System.
out
.
format
(
"Key %d: %d%n"
,
2
, rnd2.
nextInt
(
min,
2
, max
)
)
;
// 40
}
}
Всего: 1
Вопросы и ответы
Топ участников
Последние ответы
Комментарии
Поделиться
Разделы
Авторские статьи
Вопросы и ответы
Полезные коды
Форум
Гостевая книга
Реклама
Мы в соцсетях