X

Случайные числа в Java

Тестирование генерации случайного int, двумя способами: с помощью класса Math и с помощью класса Random.

Собственно, ничего сложного, поэтому в пример я добавил еще работу с интерфейсами и абстрактными классами, вот пример:

import java.util.Random;

public class Main {

 public static void main(String[] args) {

  RandomGeneratorInterface[] generators = new RandomGeneratorInterface[2];
  generators[0] = new RandomGeneratorWithMathClass();

  System.out.println( "Random generator version 1: " +
       generators[0].getTestResult(100, 1, 100)
  );

  generators[1] = new RandomGeneratorWithRandomClass();  

  System.out.println( "Random generator version 2: " +
    generators[1].getTestResult(100, 1, 100)
  );

 }

}

interface RandomGeneratorInterface {
 int getRandInt(int from, int to);
 String getTestResult(int n, int from, int to);
}

abstract class RandomGenerator implements RandomGeneratorInterface
{
 abstract public int getRandInt(int from, int to);
 public String getTestResult(int n, int from, int to)
 {
  StringBuilder sb = new StringBuilder();
  for (int i=0; i<10; i++)
  {
   int r = getRandInt(from, to);
   sb.append( ((r<10)?"0":"") + r +" " );
  }
  return sb.toString();
 }
}

class RandomGeneratorWithMathClass extends RandomGenerator {
 @Override
 public int getRandInt(int from, int to)
 {
  return from + (int) ( Math.random()*to );
 }
}

class RandomGeneratorWithRandomClass extends RandomGenerator {
 @Override
 public int getRandInt(int from, int to)
 {
  return from + (new Random()).nextInt(to);
 }
}

Результат работы:

Random generator version 1: 50 23 49 07 49 08 25 62 97 23
Random generator version 2: 05 21 05 80 55 92 73 33 07 30

Если же Вы пришли, просто скопипастить нужный метод, то вот метод который работает через класс Math:

public int getRandInt(int from, int to)
{
 return from + (int) ( Math.random()*to );
}

а вот метод который работает через класс Random (обратите внимание, что в нем есть еще и другие методы, например для генерации вещественных чисел):

public int getRandInt(int from, int to)
{
 return from + (new Random()).nextInt(to);
}
Категории: Java Java labs