Het genereren van een reeks willekeurige getallen is een van die veel voorkomende taken die van tijd tot tijd opduiken. In Java kan dit eenvoudig worden bereikt door de klasse java.util.Random te gebruiken.
De eerste stap is, net als bij het gebruik van een API-klasse, om de importverklaring vóór de start van uw programmaklasse te plaatsen:
Maak vervolgens een willekeurig object:
Het object Random biedt u een eenvoudige generator voor willekeurige getallen. De methoden van het object geven de mogelijkheid om willekeurige getallen te kiezen. De methoden nextInt () en nextLong () retourneren bijvoorbeeld een getal dat binnen het bereik van waarden (negatief en positief) valt van respectievelijk de int en long data types:
De geretourneerde nummers worden willekeurig gekozen int en lange waarden:
Normaal moeten de te genereren willekeurige getallen binnen een bepaald bereik liggen (bijv. Tussen 1 en 40 inclusief). Voor dit doel kan de methode nextInt () ook een parameter int accepteren. Het geeft de bovengrens aan voor het bereik van getallen. Het bovenste limietnummer is echter niet opgenomen als een van de nummers die kunnen worden gekozen. Dat klinkt misschien verwarrend, maar de methode nextInt () werkt vanaf nul. Bijvoorbeeld:
kiest alleen een willekeurig nummer van 0 tot en met 39. Om een bereik te kiezen dat begint met 1, voegt u eenvoudig 1 toe aan het resultaat van de methode nextInt (). Als u bijvoorbeeld een nummer tussen 1 en 40 wilt kiezen, voegt u er een toe aan het resultaat:
Als het bereik begint met een hoger nummer dan één, moet u:
Als u bijvoorbeeld een nummer van 5 tot en met 35 wilt kiezen, is het bovenste limietnummer 35-5 + 1 = 31 en moeten er 5 aan het resultaat worden toegevoegd:
Ik moet erop wijzen dat de klasse Random op een deterministische manier willekeurige getallen genereert. Het algoritme dat de willekeur produceert, is gebaseerd op een getal dat een seed wordt genoemd. Als het seed-nummer bekend is, is het mogelijk om de nummers te berekenen die met het algoritme worden geproduceerd. Om dit te bewijzen, gebruik ik de cijfers van de datum dat Neil Armstrong voor het eerst op de maan stapte als mijn zaadnummer (20 juli 1969):
Het maakt niet uit wie deze code uitvoert, de volgorde van de "willekeurige" getallen is:
Standaard het seed-nummer dat wordt gebruikt door:
is de huidige tijd in milliseconden sinds 1 januari 1970. Normaal levert dit voldoende willekeurige getallen op voor de meeste doeleinden. Merk echter op dat twee willekeurige nummergenerators die binnen dezelfde milliseconde zijn gemaakt, dezelfde willekeurige getallen genereren.
Wees ook voorzichtig wanneer u de klasse Random gebruikt voor elke toepassing die een veilige generator voor willekeurige getallen moet hebben (bijvoorbeeld een gokprogramma). Het is mogelijk om het startnummer te raden op basis van de tijd waarop de toepassing wordt uitgevoerd. Over het algemeen is het voor toepassingen waarbij de willekeurige getallen absoluut cruciaal zijn, het beste om een alternatief voor het willekeurige object te vinden. Voor de meeste toepassingen waarbij er slechts een bepaald willekeurig element moet zijn (bijvoorbeeld dobbelstenen voor een bordspel), werkt het prima.