Случайные числа в 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: | Rating: / | Tags:

Leave a Reply