Случајни бројеви се широко користе у програмирању за симулације безбедности игара итд. Постоји више начина за генерисање случајних бројева коришћењем уграђених метода и класа у Јави. Најчешће коришћени приступи су наведени у наставку:
- јава.утил.Рандом цласс
- Метода Матх.рандом() (враћа двоструке вредности)
- ТхреадЛоцалРандом класа (уведена у Јава 7)
Хајде да детаљно истражимо сваки од ових приступа један по један
1. Коришћење јава.утил.Рандом
Уз помоћ ове класе можемо генерисати случајне бројеве различитих типова (инт доубле лонг боолеан итд.).
Кључне методе:
стринг буилдер
- нектИнт(): Овај метод генерише насумични цео број (пун опсег укључујући негативне)
- нектИнт(инт боунд): Овај метод генерише насумични цео број између 0 (укључиво) и ограниченог (искључиво)
- нектДоубле(): Овај метод генерише насумично дупло између 0,0 (укључиво) и 1,0 (искључиво)
- нектБоолеан(): Насумично тачно или нетачно
Пример :
Java// Generating random number using java.util.Random; import java.util.Random; public class Geeks{ public static void main(String[] args) { // Creating the instance of Random class Random r= new Random(); // Generate random integers in range 0 to 999 int r1 = r.nextInt(1000); int r2 = r.nextInt(1000); // Printing random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate random doubles double rd1 = r.nextDouble(); double rd2 = r.nextDouble(); // Printing random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); } }
Излаз
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275
Генерисање бројева у одређеном опсегу
разлика између два стринга питона
Формула за генерисање случајног броја са одређеним опсегом је наведена у наставку:
Рандом Ранд = нев Рандом();
инт рандомНум = ранд.нектИнт(мак - мин + 1) + мин;
Напомена: мин и мак су наша доња и виша граница броја.
Пример:
Java// Generating random number in a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { Random r = new Random(); int max=100min=50; System.out.println('Generated numbers are within '+ min +' to '+ max); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); } }
Излаз
Generated numbers are within 50 to 100 55 51 51
2. Коришћење Матх.рандом()
Тхе Час математике садржи различите методе за извођење различитих нумеричких операција као што је израчунавање логаритама експоненцијације итд. Једна од ових метода је насумично() овај метод враћа двоструку вредност са позитивним предзнаком већим или једнаким 0,0 и мањим од 1,0. Враћене вредности се бирају псеудо насумично. Овај метод може да генерише само насумичне бројеве типа Доублес.
Пример:
јава свитцхJava
// Java program to demonstrate working of // Math.random() to generate random numbers import java.util.*; public class Geeks { public static void main(String args[]) { // Generating random doubles System.out.println('Random doubles: ' + Math.random()); System.out.println('Random doubles: ' + Math.random()); } }
Излаз
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417
Генерисање бројева у одређеном опсегу
Ево формуле за генерисање случајног броја са одређеним опсегом где су мин и максимум наша доња и виша граница броја:
азбука и бројеви
инт рандомНум = мин + (инт)(Матх.рандом() * ((мак - мин) + 1));
Пример:
Java// Demonstrating how to generate random // number within a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { int max=100min=50; System.out.println('Generated numbers are within '+min+' to '+max); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); } }
Излаз
Generated numbers are within 50 to 100 82 68 77
3. Коришћење ТхреадЛоцалРандом
Ово је препоручени начин у окружењима са више нити јер смањује свађу.
Кључне методе:
- цуррент().нектИнт(): Случајни цео број (пун опсег)
- цуррент().нектИнт(мин мак + 1): Случајни цео број у опсегу (додао сам овај ограничени пример)
- цуррент().нектДоубле(): Насумично дупло (0,0 до 1,0)
- цуррент().нектБоолеан(): Насумично тачно или нетачно
Пример:
Java// Demonstrates how to generate random integers // doubles and booleans using ThreadLocalRandom import java.util.concurrent.ThreadLocalRandom; public class Geeks { public static void main(String[] args) { // Generate random integers in range 0 to 999 // Random number between 0 and 999 int r1 = ThreadLocalRandom.current().nextInt(1000); // Random number between 0 and 999 int r2 = ThreadLocalRandom.current().nextInt(1000); // Print random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate Random doubles between 0.0 (inclusive) // and 1.0 (exclusive) double rd1 = ThreadLocalRandom.current().nextDouble(); double rd2 = ThreadLocalRandom.current().nextDouble(); // Print random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); // Generate random booleans boolean rb1 = ThreadLocalRandom.current().nextBoolean(); boolean rb2 = ThreadLocalRandom.current().nextBoolean(); // Print random Booleans System.out.println('Random Booleans: ' + rb1); System.out.println('Random Booleans: ' + rb2); } }
Излаз
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false