Hoe genereer ik willekeurige gehele getallen binnen een bepaald bereik in Java?
Hoe genereer ik een willekeurige int
waarde in een bepaald bereik?
Ik heb het volgende geprobeerd, maar dat werkt niet:
Probeer 1:
randomNum = minimum + (int)(Math.random() * maximum);
// Bug: `randomNum` can be bigger than `maximum`.
**Poging 2.
Random rn = new Random();
int n = maximum - minimum + 1;
int i = rn.nextInt() % n;
randomNum = minimum + i;
// Bug: `randomNum` can be smaller than `minimum`.
3359
3
In Java 1.7 of later, is de standaard manier om dit te doen als volgt:
Zie de relevante JavaDoc. Deze aanpak heeft het voordeel dat het niet nodig is om een java.util.Random instantie expliciet te initialiseren, wat een bron van verwarring en fouten kan zijn als het onjuist wordt gebruikt.
Omgekeerd is er echter geen manier om het zaad expliciet in te stellen, zodat het moeilijk kan zijn om resultaten te reproduceren in situaties waarin dat nuttig is, zoals testen of het opslaan van spelstatussen of iets dergelijks. In die situaties kan de onderstaande pre-Java 1.7 techniek worden gebruikt.
Vóór Java 1.7 is de standaardmanier om dit te doen als volgt:
Zie de relevante JavaDoc. In de praktijk is de klasse java.util.Random vaak te verkiezen boven java.lang.Math.random().
In het bijzonder is het niet nodig om het wiel voor het genereren van willekeurige gehele getallen opnieuw uit te vinden wanneer er een eenvoudige API binnen de standaardbibliotheek bestaat om deze taak uit te voeren.
Gebruik: