logo

Satunnaislukujen luominen Javassa

Java tarjoaa kolme tapaa luoda satunnaislukuja käyttämällä joitain alla lueteltuja sisäänrakennettuja menetelmiä ja luokkia:

    java.util.Satunnainen luokka Math.random -menetelmä : Voi luoda kaksoistyyppisiä satunnaislukuja. ThreadLocalRandom-luokka

1) java.util.Random

  • Jotta voisimme käyttää tätä luokkaa satunnaislukujen luomiseen, meidän on ensin luotava tämän luokan esiintymä ja sitten vedottava menetelmiä, kuten nextInt(), nextDouble(), nextLong() jne. käyttämällä kyseistä ilmentymää.
  • Voimme luoda satunnaisia ​​lukuja tyyppejä kokonaislukuja, float, double, long, booleans käyttämällä tätä luokkaa.
  • Voimme välittää argumentteja menetelmille, joilla asetetaan yläraja generoitavien lukujen alueelle. Esimerkiksi nextInt(6) luo lukuja välillä 0-5, molemmat mukaan lukien.

Java






// A Java program to demonstrate random number generation> // using java.util.Random;> import> java.util.Random;> > public> class> generateRandom{> > >public> static> void> main(String args[])> >{> >// create instance of Random class> >Random rand =>new> Random();> > >// Generate random integers in range 0 to 999> >int> rand_int1 = rand.nextInt(>1000>);> >int> rand_int2 = rand.nextInt(>1000>);> > >// Print random integers> >System.out.println(>'Random Integers: '>+rand_int1);> >System.out.println(>'Random Integers: '>+rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = rand.nextDouble();> >double> rand_dub2 = rand.nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '>+rand_dub1);> >System.out.println(>'Random Doubles: '>+rand_dub2);> >}> }>

verilog-tapauslausunto

>

>

Lähtö

Random Integers: 618 Random Integers: 877 Random Doubles: 0.11981638980670772 Random Doubles: 0.7288425427367139>

2) Math.random()

Luokka Math sisältää erilaisia ​​menetelmiä erilaisten numeeristen operaatioiden suorittamiseen, kuten eksponentioinnin, logaritmien jne. laskentaan. Yksi näistä menetelmistä on random(), tämä menetelmä palauttaa kaksoisarvon positiivisella etumerkillä, joka on suurempi tai yhtä suuri kuin 0,0 ja pienempi kuin 1,0 . Palautetut arvot valitaan näennäissatunnaisesti. Tämä menetelmä voi tuottaa vain satunnaislukuja, joiden tyyppi on Doubles. Alla oleva ohjelma selittää kuinka tätä menetelmää käytetään:

Java




// Java program to demonstrate working of> // Math.random() to generate random numbers> import> java.util.*;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generating random doubles> >System.out.println(>'Random doubles: '> + Math.random());> >System.out.println(>'Random doubles: '> + Math.random());> >}> }>

>

>

Lähtö

Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>

3) java.util.concurrent.ThreadLocalRandom-luokka

Tämä luokka on otettu käyttöön Java 1.7:ssä luomaan satunnaislukuja tyyppisiä kokonaislukuja, tuplauksia, booleaneja jne. Alla oleva ohjelma selittää, kuinka tätä luokkaa käytetään satunnaislukujen luomiseen:

Java




// Java program to demonstrate working of ThreadLocalRandom> // to generate random numbers.> import> java.util.concurrent.ThreadLocalRandom;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generate random integers in range 0 to 999> >int> rand_int1 = ThreadLocalRandom.current().nextInt();> >int> rand_int2 = ThreadLocalRandom.current().nextInt();> > >// Print random integers> >System.out.println(>'Random Integers: '> + rand_int1);> >System.out.println(>'Random Integers: '> + rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = ThreadLocalRandom.current().nextDouble();> >double> rand_dub2 = ThreadLocalRandom.current().nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '> + rand_dub1);> >System.out.println(>'Random Doubles: '> + rand_dub2);> > >// Generate random booleans> >boolean> rand_bool1 = ThreadLocalRandom.current().nextBoolean();> >boolean> rand_bool2 = ThreadLocalRandom.current().nextBoolean();> > >// Print random Booleans> >System.out.println(>'Random Booleans: '> + rand_bool1);> >System.out.println(>'Random Booleans: '> + rand_bool2);> >}> }>

kuinka monta nollaa 1 miljardissa
>

>

Lähtö

Random Integers: -2106603442 Random Integers: 1894823880 Random Doubles: 0.6161052280172054 Random Doubles: 0.8418944588752132 Random Booleans: false Random Booleans: true>

Luoda satunnaislukuja tietyillä alueilla. On 2 eri tapaa tehdä se:

  • Satunnaisen luokan käyttö
  • Käyttämällä Math.random()-menetelmää

1. Satunnaisluokan käyttö

Tässä on kaava, jolla luodaan satunnaislukuja tietyllä alueella, jossa min ja max ovat ala- ja ylärajamme.

Satunnainen rand = new Random();
int satunnaisluku = rand.nextInt(max – min + 1) + min;

Java




import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >Random rand =>new> Random();> >int> max=>100>,min=>50>;> >System.out.println(>'Generated numbers are within '>+min+>' to '>+max);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >}> }>

>

>

Lähtö

Generated numbers are within 50 to 100 58 87 55>

Ajan monimutkaisuus: Sen aikamonimutkaisuus on O(1)
Aputila: O(1) vaatii jatkuvaa tilaa.

2. Math.random()-menetelmän käyttäminen

Tässä on kaava satunnaisluvun luomiseksi tietyllä alueella, jossa min ja max ovat ala- ja ylärajamme:

int satunnaisluku = min + (int)(Math.random() * ((max – min) + 1));

Java




/*package whatever //do not write package name here */> import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> max=>100>,min=>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>)));> >}> }>

>

>

Lähtö

painike keskittää css
Generated numbers are within 50 to 100 53 99 77>

Ajan monimutkaisuus: Sen aikamonimutkaisuus on O(1)
Aputila: O(1) vaatii jatkuvaa tilaa.