Unieke willekeurige nummers genereren

Wanneer u willekeurige getallen genereert, is het vaak zo dat elk gegenereerd nummer uniek moet zijn. Een goed voorbeeld is het kiezen van lotnummers. Elk willekeurig gekozen nummer uit een bereik (bijvoorbeeld 1 tot 40) moet uniek zijn, anders is de loterij ongeldig.

Een verzameling gebruiken

De eenvoudigste manier om unieke willekeurige getallen te kiezen, is door het bereik van getallen in een verzameling met de naam ArrayList te plaatsen. Als u nog nooit een ArrayList bent tegengekomen, is dit een manier om een ​​set elementen op te slaan die geen vast nummer hebben. De elementen zijn objecten die kunnen worden toegevoegd aan of verwijderd uit de lijst. Laten we bijvoorbeeld de nummerkiezer maken. Het moet unieke nummers kiezen tussen 1 en 40.

Plaats eerst de getallen in een ArrayList met de methode add (). Het object moet als parameter worden toegevoegd:

java.util.ArrayList importeren;
openbare klasse loterij
public static void main (String [] args)
// definieer ArrayList om Integer-objecten te bevatten
ArrayList-nummers = nieuwe ArrayList ();
voor (int i = 0; i < 40; i++)

numbers.add (i + 1);

System.out.println (cijfers);


Merk op dat we de Integer wrapper-klasse gebruiken voor het elementtype zodat de ArrayList objecten bevat en geen primitieve gegevenstypen.

De uitvoer toont het bereik van getallen van 1 tot 40 in volgorde:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 , 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40] 

Gebruik van de collecties klasse

Een hulpprogramma klasse genaamd Collecties biedt verschillende acties die kunnen worden uitgevoerd op een collectie zoals een ArrayList (bijvoorbeeld zoeken in de elementen, zoeken naar het maximale of minimale element, omgekeerde volgorde van elementen, enzovoort). Een van de acties die het kan uitvoeren, is om de elementen te schudden. De shuffle verplaatst elk element willekeurig naar een andere positie in de lijst. Het doet dit met behulp van een willekeurig object. Dit betekent dat het een deterministische willekeur is, maar in de meeste situaties volstaat het.

Om de ArrayList in willekeurige volgorde te plaatsen, voegt u de importcollectie toe aan de bovenkant van het programma en gebruikt u vervolgens de statische methode Shuffle. De ArrayList moet worden geschud als parameter:

import java.util.Collections;
java.util.ArrayList importeren;
openbare klasse loterij
public static void main (String [] args)
// definieer ArrayList om Integer-objecten te bevatten
ArrayList-nummers = nieuwe ArrayList ();
voor (int i = 0; i < 40; i++)

numbers.add (i + 1);

Collections.shuffle (cijfers);
System.out.println (cijfers);

Nu toont de uitvoer de elementen in de ArrayList in een willekeurige volgorde:

[24, 30, 20, 15, 25, 1, 8, 7, 37, 16, 21, 2, 12, 22, 34, 33, 14, 38, 39, 18, 36, 28, 17, 4, 32 , 13, 40, 35, 6, 5, 11, 31, 26, 27, 23, 29, 19, 10, 3, 9] 

De unieke nummers kiezen

Om de unieke willekeurige getallen te kiezen, leest u eenvoudig de elementen ArrayList een voor een met behulp van de methode get (). Het neemt de positie van het element in de ArrayList als een parameter. Als het loterijprogramma bijvoorbeeld zes nummers moet kiezen tussen 1 en 40:

import java.util.Collections;
java.util.ArrayList importeren;
openbare klasse loterij
public static void main (String [] args)
// definieer ArrayList om Integer-objecten te bevatten
ArrayList-nummers = nieuwe ArrayList ();
voor (int i = 0; i < 40; i++)

numbers.add (i + 1);

Collections.shuffle (cijfers);
System.out.print ("De lotnummers van deze week zijn:");
voor (int j = 0; j < 6; j++)

System.out.print (numbers.get (j) + "");


De output is: