Генериране на произволни числа в Java

Генериране на серия от случайни числа е една от онези често срещани задачи, които се появяват от време на време. в Ява, това може да се постигне просто с помощта на java.util. Случайна класа.

Първата стъпка, както при използването на всеки API клас, е да поставите декларацията за импортиране преди началото на вашия програмен клас:

След това създайте Random object:

Обектът Random ви предоставя прост генератор на случайни числа. Методите на обекта дават възможност за избор на произволни числа. Например методите nextInt () и nextLong () ще върнат число, което е в диапазона от стойности (отрицателни и положителни) съответно за типа int и long data:

Върнатите числа ще бъдат избрани на случаен принцип int и long стойности:

Избиране на произволни числа от определен диапазон

Обикновено случайните числа, които трябва да бъдат генерирани, трябва да бъдат от определен диапазон (например, между 1 до 40 включително). За тази цел методът nextInt () също може да приеме параметър int. Той обозначава горната граница за диапазона от числа. Горният граничен номер обаче не е включен като едно от числата, които могат да бъдат избрани. Това може да звучи объркващо, но методът nextInt () работи от нула нагоре. Например:

instagram viewer

ще избере само произволно число от 0 до 39 включително. За да изберете от диапазон, който започва с 1, просто добавете 1 към резултата от метода nextInt (). Например, за да изберете число между 1 до 40 включително, добавете едно към резултата:

Ако диапазонът започва от по-голямо число от едно, ще трябва:

  • минус началния номер от горния граничен номер и след това добавете такъв.
  • добавете началния номер към резултата от метода nextInt ().

Например, за да изберете число от 5 до 35 включително, горната граница е 35-5 + 1 = 31 и към резултата трябва да се добавят 5:

Колко случаен е случаен клас?

Трябва да отбележа, че класът Random генерира случайни числа по детерминиран начин. Алгоритъмът, който произвежда случайността, се основава на число, наречено семена. Ако номерът на семената е известен, тогава е възможно да се разберат числата, които ще бъдат произведени от алгоритъма. За да докажа това, ще използвам числата от тази дата Нийл Армстронг за първи път стъпих на Луната като номер на семето ми (20 юли 1969 г.):

Без значение кой изпълнява този код, последователността от „произволни“ числа ще бъде:

По подразбиране номерът на семената, който се използва от:

е текущото време в милисекунди от 1 януари 1970 г. Обикновено това ще доведе до достатъчно произволни числа за повечето цели. Имайте предвид обаче, че два генератора на произволни числа, създадени в рамките на една и съща милисекунда, ще генерират едни и същи случайни числа.

Внимавайте също така, когато използвате класа Random за всяко приложение, което трябва да има сигурен генератор на случайни числа (например програма за хазарт). Възможно е да познаете броя на семената въз основа на времето, в което се изпълнява приложението. По принцип за приложения, където случайните числа са абсолютно критични, най-добре е да намерите алтернатива на обекта Random. За повечето приложения, където просто трябва да има определен случаен елемент (например зарове за настолна игра), тогава той работи добре.