Coder93 Ответов: 1

генерация случайных чисел в java


как я могу сгенерировать случайное число в некотором диапазоне(например, 1-100) в java?

1 Ответов

Рейтинг:
11

OriginalGriff

Попробовать здесь: Java Practices -> генерация случайных чисел[^]


Coder93

я использую ваше решение , но оно всегда генерирует одно и то же случайное число, что мне делать ?

OriginalGriff

Переместите определение randomGenerator за пределы метода - в противном случае оно будет задано каждый раз, когда вы его вызываете.
Если вы посмотрите на определение Random, то оно предварительно настроено на системные часы, поэтому, если вы вызовете метод 10 раз в одну и ту же миллисекунду и каждый раз создадите новый Random, вы получите одни и те же числа.

Coder93

Я запускаю код через 20 минут, но он генерирует случайное число, как и раньше!!!

OriginalGriff

Скопируйте и вставьте точный код, который вы использовали.

Coder93

Это часть моего кода :

общественного класса MyClass {
частный ……;
частный случайный случайный;
…….
общественные copkmeans (двойной [][] массив данных , как int [][] ограничение , инт к инт я, инт Дж , внутр л) бросает IOException {
…….
random = new Random(i);
}
частная пустота makeCluster (){
int randomNum;
int range = k;
в то время как(диапазон > 0){
randomNum = random.nextInt(i)+1;
System.out.println("random"+randomNum);
для(int m = 1; m < l ;m++){
если(ограничение[m][1] == randomNum )
если(ограничение[m][3] == 1)
if(clusters.contains(constraint[m][2])){
перерыв;
}
если(ограничение[m][2] == randomNum )
если(ограничение[m][3] == 1)
if(clusters.contains(constraint[m][1])){
перерыв;
}
кластеры.добавить(randomNum);
used.add(randomNum);
myItem темп = новый myItem(м наборе данных , Дж);
темп.setHole();
clusterCenter.добавить(темп);
диапазон--;
перерыв;
}
}
int v = 1;
for (int a = 0 ; a < clusters.size() ; a++) {
раздел[кластеров.получил(а)] = в;
в++;

}
}

OriginalGriff

Ну да, так и будет. Вы же сами это говорите!
random = new Random(i);
Устанавливает новое случайное число, генерируемое с использованием одного и того же начального значения каждый раз. В результате он генерирует одну и ту же последовательность на числах!
Убери свое "я", и все будет хорошо.:
random = новый случайный();

Coder93

спасибо ,
это работает правильно.

OriginalGriff

Всегда пожалуйста!