„Java“ atsitiktinių skaičių generatorius - kaip generuoti sveikus skaičius su atsitiktine matematika

Kompiuteriu sukurti atsitiktiniai skaičiai yra suskirstyti į dvi kategorijas: tikrieji atsitiktiniai skaičiai ir pseudo-atsitiktiniai skaičiai.

Tikrieji atsitiktiniai skaičiai generuojami remiantis išoriniais veiksniais. Pavyzdžiui, atsitiktinumo generavimas naudojant aplinkinius garsus.

Tačiau sugeneruoti tokį tikrąjį atsitiktinį skaičių yra daug laiko reikalaujanti užduotis. Todėl mes galime naudoti pseudo-atsitiktinius skaičius, kurie generuojami naudojant algoritmą ir pradinę vertę.

Šių pseudoatsitiktinių skaičių pakanka daugumai tikslų. Pavyzdžiui, galite juos naudoti kriptografijoje, kurdami žaidimus, pavyzdžiui, kauliukus ar korteles, ir kurdami OTP (vienkartinio slaptažodžio) numerius.

Šiame straipsnyje mes sužinosime, kaip generuoti pseudo atsitiktinius skaičius naudojant Math.random()„Java“.

1. Naudokite Math.random (), kad generuotumėte skaičius

Math.random() pateikia dvigubo tipo pseudoatsitiktinį skaičių, didesnį arba lygų nuliui ir mažesnį nei vienas.

Išbandykime naudodami tam tikrą kodą:

 public static void main(String[] args) { double randomNumber = Math.random(); System.out.println(randomNumber); } // output #1 = 0.5600740702032417 // output #2 = 0.04906751303932033

randomNumber suteiks mums skirtingą atsitiktinį skaičių kiekvienai vykdymui.

Tarkime, kad norime generuoti atsitiktinius skaičius nurodytame diapazone, pavyzdžiui, nuo nulio iki keturių.

 // generate random numbers between 0 to 4 public static void main(String[] args) { // Math.random() generates random number from 0.0 to 0.999 // Hence, Math.random()*5 will be from 0.0 to 4.999 double doubleRandomNumber = Math.random() * 5; System.out.println("doubleRandomNumber = " + doubleRandomNumber); // cast the double to whole number int randomNumber = (int)doubleRandomNumber; System.out.println("randomNumber = " + randomNumber); } /* Output #1 doubleRandomNumber = 2.431392914284627 randomNumber = 2 */

Kai mes duodame dvigubą į int, int reikšmė išlaiko tik sveiko skaičiaus dalį.

Pavyzdžiui, aukščiau pateiktame kode doubleRandomNumberyra 2.431392914284627. doubleRandomNumbersveika skaičiaus dalis yra 2ir trupmeninė dalis (skaičiai po kablelio) yra 431392914284627. Taigi, randomNumberlaikys tik viso skaičiaus dalį 2.

Daugiau apie Math.random()metodą galite sužinoti „Java“ dokumentacijoje.

Naudojimas Math.random()nėra vienintelis būdas sukurti atsitiktinius skaičius „Java“. Toliau mes apsvarstysime, kaip galime generuoti atsitiktinius skaičius naudodami atsitiktinių klasę.

2. Naudokite atsitiktinę klasę sveikiems skaičiams generuoti

„Random“ klasėje turime daug pavyzdžių metodų, kurie pateikia atsitiktinius skaičius. Šiame skyriuje mes apsvarstysime du egzempliorių metodus nextInt(int bound), ir nextDouble().

Kaip naudoti „NextInt“ („int bind“) metodą

nextInt(int bound) pateikia int tipo pseudoatsitiktinį skaičių, didesnį arba lygų nuliui ir mažesnį už susietąją vertę.

boundParametras nurodo spektrą. Pvz., Jei nurodysime ribą kaip 4, nextInt(4)bus grąžinta int tipo reikšmė, didesnė arba lygi nuliui ir mažesnė nei keturi. 0,1,2,3 yra galimi nextInt(4).

Kadangi tai yra egzemplioriaus metodas, turėtume sukurti atsitiktinį objektą, kad galėtumėte pasiekti šį metodą. Pamėginkime.

 public static void main(String[] args) { // create Random object Random random = new Random(); // generate random number from 0 to 3 int number = random.nextInt(4); System.out.println(number); }

Kaip naudoti „nextDouble“ () metodą

Panašiai kaip Math.random(), nextDouble()pateikia dvigubo tipo pseudoatsitiktinį skaičių, didesnį arba lygų nuliui ir mažesnį nei vienas.

 public static void main(String[] args) { // create Random object Random random = new Random(); // generates random number from 0.0 and less than 1.0 double number = random.nextDouble(); System.out.println(number); }

Norėdami gauti daugiau informacijos, galite perskaityti atsitiktinės klasės „Java“ dokumentus.

Taigi kurį turėtumėte naudoti atsitiktinių skaičių metodą?

Math.random()naudoja atsitiktinę klasę. Jei savo programoje norime tik dvigubo tipo pseudo-atsitiktinių skaičių, galime tai naudoti Math.random().

Priešingu atveju, mes galime naudoti atsitiktinių klasę, nes ji suteikia įvairius metodus generuoti pseudo atsitiktinių skaičių įvairių tipų, kaip antai nextInt(), nextLong(), nextFloat()ir nextDouble().

Ačiū, kad skaitėte.

Bretto Jordanijos nuotraukos vaizdas „Unsplash“

Su manimi galite susisiekti „Medium“.

Laimingo kodavimo!