notri Java programiranja, smo pogosto morali ustvarite naključna števila medtem ko razvijamo aplikacije. Številne aplikacije imajo to funkcijo naključno ustvarjanje številk , na primer za preverjanje uporabnika, ki ga uporabljajo številne aplikacije OTP . Najboljši primer naključnih števil so kocke. Ker ko ga vržemo, dobimo naključno število med 1 in 6.
V tem razdelku bomo izvedeli, kaj je a naključno število in kako ustvariti naključna števila v Java .
Naključno število
Naključna števila so števila, ki uporabljajo velik nabor števil in izberejo število z uporabo matematičnega algoritma. Zadovoljuje naslednja dva pogoja:
- Ustvarjene vrednosti so enakomerno porazdeljene v določenem intervalu.
- Na podlagi sedanjih in preteklih vrednosti je nemogoče uganiti prihodnjo vrednost.
Generiranje naključnega števila v Javi
V Javi obstaja tristransko ustvarjanje naključnih števil z uporabo metode in razredov.
- Uporabljati naključen() Metoda
- Uporabljati naključen Razred
- Uporabljati ThreadLocalRandom Razred
- Uporabljati ints() Metoda (v Javi 8)
Uporaba metode Math.random().
Java matematika ima veliko metod za različne matematične operacije. Eden od njih je naključen() metoda. Je statična metoda razreda matematike. Lahko ga prikličemo neposredno. Ustvarja samo dvojno vnesite naključno število večja ali enaka 0,0 in manj kot 1,0 . Pred uporabo metode random() moramo uvozitijava.lang.Mathrazred.
Sintaksa:
public static double random()
Ne sprejema nobenega parametra. Vrne psevdonaključno dvojno vrednost, ki je večja ali enaka 0,0 in manjša od 1,0.
Ustvarimo program, ki generira naključna števila z uporabo metode random().
vrednost niza
RandomNumberExample1.java
import java.lang.Math; public class RandomNumberExample1 { public static void main(String args[]) { // Generating random numbers System.out.println('1st Random Number: ' + Math.random()); System.out.println('2nd Random Number: ' + Math.random()); System.out.println('3rd Random Number: ' + Math.random()); System.out.println('4th Random Number: ' + Math.random()); } }
Izhod:
1st Random Number: 0.17434160924512265 2nd Random Number: 0.4297410090709448 3rd Random Number: 0.4828656381344487 4th Random Number: 0.13267917059488898
Ne pozabite: Vsakič, ko izvajamo program, dobimo drugačen izhod. Vaš izhod se lahko razlikuje od izhoda, prikazanega zgoraj.
Uporabimo lahko tudi naslednjo formulo, če želimo ustvariti naključno število med določenim obsegom.
Math.random() * (max - min + 1) + min
V zgornji formuli je najmanjša vrednost vključujoča, največja vrednost pa izključujoča.
Ustvarimo program, ki generira naključna števila med 200 in 400.
RandomNumberExample2.java
public class RandomNumberExample2 { public static void main( String args[] ) { int min = 200; int max = 400; //Generate random double value from 200 to 400 System.out.println('Random value of type double between '+min+' to '+max+ ':'); double a = Math.random()*(max-min+1)+min; System.out.println(a); //Generate random int value from 200 to 400 System.out.println('Random value of type int between '+min+' to '+max+ ':'); int b = (int)(Math.random()*(max-min+1)+min); System.out.println(b); } }
Izhod 1:
Random value of type double between 200 to 400: 233.88329802655377 Random value of type int between 200 to 400: 329
Rezultat 2:
Random value of type double between 200 to 400: 254.8419979875385 Random value of type int between 200 to 400: 284
Uporaba naključnega razreda
Drug način za ustvarjanje naključnega števila je uporaba Java naključen razred odjava.utilpaket. Ustvari tok psevdonaključnih števil. Generiramo lahko naključno število katerega koli podatkovnega tipa, kot je celo število, float, dvojno, logično, dolgo. Če boste ta razred uporabili za ustvarjanje naključnih števil, sledite spodnjim korakom:
- Najprej uvozite razredjava.lang.Random.
- Ustvarite predmet razreda Random.
- Prikličite katero koli od naslednjih metod:
Vse zgornje metode vrnejo naslednjo psevdonaključno, homogeno porazdeljeno vrednost (ustrezna metoda) iz tega zaporedja generatorja naključnih števil. The nextDouble() in nextFloat() metoda ustvari naključno vrednost med 0,0 in 1,0.
The nextInt (int vezano) metoda sprejme mejo parametra (zgornjo), ki mora biti pozitivna. Ustvari naključno število v območju od 0 do bound-1.
Ustvarimo program, ki generira naključna števila z uporabo razreda Random.
RandomNumberExample3.java
import java.util.Random; public class RandomNumberExample3 { public static void main(String args[]) { // creating an object of Random class Random random = new Random(); // Generates random integers 0 to 49 int x = random.nextInt(50); // Generates random integers 0 to 999 int y = random.nextInt(1000); // Prints random integer values System.out.println('Randomly Generated Integers Values'); System.out.println(x); System.out.println(y); // Generates Random doubles values double a = random.nextDouble(); double b = random.nextDouble(); // Prints random double values System.out.println('Randomly Generated Double Values'); System.out.println(a); System.out.println(b); // Generates Random float values float f=random.nextFloat(); float i=random.nextFloat(); // Prints random float values System.out.println('Randomly Generated Float Values'); System.out.println(f); System.out.println(i); // Generates Random Long values long p = random.nextLong(); long q = random.nextLong(); // Prints random long values System.out.println('Randomly Generated Long Values'); System.out.println(p); System.out.println(q); // Generates Random boolean values boolean m=random.nextBoolean(); boolean n=random.nextBoolean(); // Prints random boolean values System.out.println('Randomly Generated Boolean Values'); System.out.println(m); System.out.println(n); } }
Izhod:
Randomly Generated Integers Values 23 767 Randomly Generated Double Values 0.37823814494212016 0.998058172671956 Randomly Generated Float Values 0.87804186 0.93880254 Randomly Generated Long Values -4974823544291679198 3650240138416076693 Randomly Generated Boolean Values false true
Uporaba razreda ThreadLocalRandom
The ThreadLocalRandom razred je opredeljen vjava.util.concurrentpaket. Inicializira se z interno ustvarjenim semenom, enako kot naključni generator razreda Math. Ni ga mogoče spreminjati. Ta razred lahko uporabimo na naslednji način:
ThreadLocalRandom.current().nextX(...)
Kjer je X Int, Long itd.
Opomba: ThreadLocalRandom ni mogoče pomotoma deliti z več nitmi.
Generiramo lahko naključno število katerega koli podatkovnega tipa, kot je celo število, float, dvojno, logično, dolgo. Če boste ta razred uporabili za ustvarjanje naključnih števil, sledite spodnjim korakom:
- Najprej uvozite razred z uporabojava.util.concurrent.ThreadLocalRandom.
- Prikličite ustrezno metodo, za katero želite naključno generirati številke.
Vse zgornje metode preglasijo ustrezno metodo razreda Random in vrnejo ustrezno vrednost.
Zgornje metode razčlenijo parameter vezan (zgornji), ki mora biti pozitivno . Vrne ustrezno naključno ustvarjeno vrednost med 0 (vključno) in navedeno mejo (izključno). Vrže IllegalArgumentExcetion če je meja negativna.
Zgornje metode razčlenijo dva parametra izvor in vezan . Izvor določa najmanjša vrednost vrnjeno in vezava določa Zgornja meja . Vrne ustrezno naključno ustvarjeno vrednost med navedenim izvorom (vključno) in vezavo (izključno). Tudi meti IllegalArgumentExcetion če je izvor večji ali enak vezanemu.
Ustvarimo program, ki generira naključna števila z uporabo Razred ThreadLocalRandom .
RandomNumberExample4.java
import java.util.concurrent.ThreadLocalRandom; public class RandomNumberExample4 { public static void main(String args[]) { // Generate random integers between 0 to 999 int a = ThreadLocalRandom.current().nextInt(); int b = ThreadLocalRandom.current().nextInt(); // Print random integer values System.out.println('Randomly Generated Integer Values:'); System.out.println(a); System.out.println(b); // Generate Random double values double c = ThreadLocalRandom.current().nextDouble(); double d = ThreadLocalRandom.current().nextDouble(); // Print random doubles System.out.println('Randomly Generated Double Values:'); System.out.println(c); System.out.println(d); // Generate random boolean values boolean e = ThreadLocalRandom.current().nextBoolean(); boolean f = ThreadLocalRandom.current().nextBoolean(); // Print random Booleans System.out.println('Randomly Generated Boolean Values:'); System.out.println(e); System.out.println(f); } }
Izhod 1:
Randomly Generated Integer Values: 348534891 -1887936727 Randomly Generated Double Values: 0.15644440033119833 0.5242730752133399 Randomly Generated Boolean Values: true true
Rezultat 2:
Output 2: Randomly Generated Integer Values: 402755574 295398333 Randomly Generated Double Values: 0.4856461791062565 0.5148677091077654 Randomly Generated Boolean Values: false true
Podobno lahko uporabimo tudi druge metode ThreadLocalRandomclass .
Generiranje naključnih števil v Javi 8
V Javi 8 je bila dodana nova metoda ints(). Naključni razred . Moramo uvozitijava.util.Randompred uporabo metode.
ints():
Psevdonaključne vrednosti int so bile ustvarjene enako kot klic metode nextInt(). Vrne neomejen tok psevdonaključnih int vrednosti.
ints(dolga velikost toka):
Metoda razčleni parameter streamSize vrste dolgo. Določa število vrednosti, ki jih je treba ustvariti. Psevdonaključne vrednosti int so bile ustvarjene enako kot klic metode nextInt(). Vrne tudi tok naključno ustvarjenih vrednosti int. Vrže IllegalArgumentException če je velikost toka manjša od nič.
ints(long streamSize, int randomNumberOrigin, int randomNumberBound):
Parametri:
Vrne tok psevdonaključnih vrednosti int z navedenim izvorom in mejo. Vrže IllegalArgumentException če:
- stramSize<0< li>
- izvor > = vezan 0<>
ints(int randomNumberOrigin, int randomNumberBound):
Parametri:
Vrne neomejen tok psevdonaključnih vrednosti int z navedenim izvorom in mejo. Vrže IllegalArgumentException če je izvor večji ali enak vezanemu.
Podobno lahko ustvarimo tudi tok dolgih in dvojnih vrst z uporabo dolgo() in dvojno () metoda oz.
Ustvarimo program, ki generira tok celih števil z uporabo ints() metoda razreda Random.
RandomNumberExample5.java
import java.util.Random; public class RandomNumberExample5 { public static void main(String[] args) { randomInts(5); randomInts(9, 50, 90); //getStreamOfRandomInts(30, 50); } //method that generates a stream of integers having size 5 public static void randomInts(int num) { Random random = new Random(); random.ints(num).forEach(System.out::println); } //method that generates a stream of 9 integers between 50 to 90 public static void randomInts(int num, int origin, int bound) { Random random1 = new Random(); random1.ints(num, origin, bound).forEach(System.out::println); } }
Izhod 1:
727900357 -1073118456 306279822 370327182 1366265119 65 75 75 88 76 75 56 86 85
Rezultat 2:
-1338107947 -1698771421 594232770 -1224937976 -1625069815 56 69 67 87 64 52 72 75 76