Więcej
Jak wygenerować losowe liczby całkowite w określonym zakresie w Javie?
Jak wygenerować losową wartość int
w określonym zakresie?
Próbowałem następujących rozwiązań, ale te nie działają:
Próba 1:
randomNum = minimum + (int)(Math.random() * maximum);
// Bug: `randomNum` can be bigger than `maximum`.
Próba 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
W Java 1.7 lub nowszej, standardowy sposób, aby to zrobić jest następujący:
Zobacz odpowiedni dokument JavaDoc. To podejście ma tę zaletę, że nie trzeba jawnie inicjalizować instancji java.util.Random, która może być źródłem nieporozumień i błędów, jeśli jest niewłaściwie używana.
Jednakże, odwrotnie, nie ma sposobu na jawne ustawienie nasion, więc może być trudno odtworzyć wyniki w sytuacjach, w których jest to przydatne, takich jak testowanie lub zapisywanie stanów gry lub podobnych. W takich sytuacjach można użyć techniki sprzed Java 1.7 pokazanej poniżej.
Przed Javą 1.7, standardowy sposób na zrobienie tego jest następujący:
Zobacz odpowiedni dokument JavaDoc. W praktyce, klasa java.util.Random jest często preferowana zamiast java.lang.Math.random().
W szczególności, nie ma potrzeby ponownego wymyślania koła generowania losowych liczb całkowitych, gdy istnieje proste API w ramach biblioteki standardowej, aby wykonać to zadanie.
Użyj: