logo

Generování náhodných čísel v Javě

Java poskytuje tři způsoby generování náhodných čísel pomocí některých vestavěných metod a tříd, jak je uvedeno níže:

    java.util.Random class Math.random method : Může generovat náhodná čísla typu double. Třída ThreadLocalRandom

1) java.util.Random

  • Abychom mohli tuto třídu použít ke generování náhodných čísel, musíme nejprve vytvořit instanci této třídy a poté pomocí této instance vyvolat metody jako nextInt(), nextDouble(), nextLong() atd.
  • Pomocí této třídy můžeme generovat náhodná čísla typů integers, float, double, long, booleans.
  • Můžeme předat argumenty metodám pro umístění horní hranice rozsahu čísel, která mají být generována. Například nextInt(6) vygeneruje čísla v rozsahu 0 až 5 včetně.

Jáva






// 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);> >}> }>

>

řetězec do int java

>

Výstup

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

2) Math.random()

Třída Math obsahuje různé metody pro provádění různých numerických operací, jako je výpočet umocňování, logaritmy atd. Jednou z těchto metod je random(), tato metoda vrací dvojitou hodnotu s kladným znaménkem, větší nebo rovnou 0,0 a menší než 1,0 . Vrácené hodnoty jsou vybrány pseudonáhodně. Tato metoda může generovat pouze náhodná čísla typu Doubles. Níže uvedený program vysvětluje, jak tuto metodu používat:

Jáva




// 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());> >}> }>

>

>

Výstup

Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>

3) třída java.util.concurrent.ThreadLocalRandom

Tato třída je zavedena v java 1.7 pro generování náhodných čísel typu celá čísla, double, booleans atd. Níže program vysvětluje, jak používat tuto třídu ke generování náhodných čísel:

Jáva




// 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);> >}> }>

síťová vrstva v počítačových sítích

>

>

Výstup

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

Generování náhodných čísel se specifickými rozsahy. Existují 2 různé způsoby, jak to udělat:

  • Použití náhodné třídy
  • Použití metody Math.random().

1. Použití náhodné třídy

Zde je vzorec pro generování náhodných čísel se specifickým rozsahem, kde min a max jsou naše spodní a horní hranice počtu.

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

Jáva


numpy dot produkt



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);> >}> }>

>

>

Výstup

Generated numbers are within 50 to 100 58 87 55>

Časová složitost: Má časovou složitost O(1)
Pomocný prostor: O(1) vyžaduje konstantní prostor.

2. Použití metody Math.random().

Zde je vzorec pro vygenerování náhodného čísla se specifickým rozsahem, kde min a max jsou naše spodní a vyšší limity počtu:

Java řetězec ve srovnání

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

Jáva




/*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>)));> >}> }>

>

>

Výstup

Generated numbers are within 50 to 100 53 99 77>

Časová složitost: Má časovou složitost O(1)
Pomocný prostor: O(1) vyžaduje konstantní prostor.