Случайные числа в Java
Тестирование генерации случайного int, двумя способами: с помощью класса Math и с помощью класса Random.
Собственно, ничего сложного, поэтому в пример я добавил еще работу с интерфейсами и абстрактными классами, вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
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); } } |
Результат работы:
1 2 3 4 |
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:
1 2 3 4 5 6 |
public int getRandInt(int from, int to) { return from + (int) ( Math.random()*to ); } |
а вот метод который работает через класс Random (обратите внимание, что в нем есть еще и другие методы, например для генерации вещественных чисел):
1 2 3 4 5 6 |
public int getRandInt(int from, int to) { return from + (new Random()).nextInt(to); } |
Author: | Tags: /
| Rating:
Leave a Reply