2010-12-08 3 views

ответ

8

Последующее действие сделает все, что вам нужно.

Random r = new Random(); 
int randomInt = r.nextInt(5); 

Если вы делаете это в цикле, убедитесь, что вы инициализировать Random вне цикла.

Random r = new Random(); 
for(int i = 0;i < someThing; i++) { 
    System.out.println(r.nextInt(5)); 
} 

Смотрите документацию для Random класса: http://download.oracle.com/javase/6/docs/api/java/util/Random.html

2

Одна вещь, чтобы быть осторожным в том, что вы не должны создавать новый случайный объект каждый раз, когда вы хотите новый номер. Эта линия должна быть выполнена один раз при запуске приложения:

Random r = new Random(); 

Тогда это следует называть каждый раз, когда вы хотите новое случайное число:

int x = r.nextInt(5); 
2
System.out.println(""+(int) (Math.random()*5.0)); 

Если вам нужно только для создания одного случайное число, я считаю, что немного дешевле использовать Math.random(), чем создавать объект.

Примечание: генерировать любое случайное число от 0 до п, (0 включительно, п эксклюзивные), просто использовать:

(int) (Math.random()*n); 

Для того, чтобы сгенерировать любое случайное число от т к т + п, (м включительно, м + п эксклюзив), просто используйте:

m + (int) (Math.random()*n); 
+0

Построение экземпляра Random не требуется дороже, чем ваш путь – ognian 2010-12-08 19:26:15

2

Пожалуйста Оплатите Attantion - Calling каждый раз код:

Random r = new Random(); 

будет, вероятно, ¨R этерн вы те же цифры (я думаю, немногие из вас заметили, что фанамона).

Я предполагаю, что это как-то связано с проблемой Java со случайными числами: Java: Can (new Random()).nextInt(5) always return the same number? и: Java random always returns the same number when I set the seed?

В любом случае мое решение добавить статическую переменную в класс:

static Random sRandomGen = new Random(); 

и вызовите nextInt из соответствующего метода, когда мне нужно случайное число. Таким образом, я получаю равное разделение между результатами.

int rnd = sRandomGen.nextInt(numofmatches - 1); 

Это решение отлично подходит для меня.

Смежные вопросы