Véletlen számok generálása a Java-ban

Egy sorozat generálása véletlen számok egyike azoknak a közös feladatoknak, amelyek időről időre felbukkannak. Ban ben Jáva, egyszerűen elérhető a java.util használatával. Véletlenszerű osztály.

Az első lépés, mint bármely API használata osztály, az az, hogy az importálási nyilatkozatot elhelyezi a program osztályának megkezdése előtt:

Ezután hozzon létre egy véletlenszerű objektumot:

A Véletlenszerű objektum egyszerű véletlenszám-generátort biztosít. Az objektum módszerei lehetőséget adnak véletlen számok kiválasztására. Például a NextInt () és a NextLong () metódusok olyan számot adnak vissza, amely az int és a hosszú adattípus értékeinek (negatív és pozitív) tartományán belül található:

A visszaküldött számok véletlenszerűen kiválasztott int és hosszú értékek lesznek:

Véletlen számok kiválasztása egy bizonyos tartományból

A generálandó véletlen számoknak általában egy bizonyos tartományból kell állniuk (például 1 és 40 között). Ebből a célból a nextInt () metódus elfogadhat egy int paramétert. Ez a számtartomány felső határát jelöli. A felső határszám azonban nem szerepel a kiválasztható számok egyikében. Ez zavarosnak tűnhet, de a nextInt () módszer nullától felfelé működik. Például:

instagram viewer

csak egy véletlenszerű számot választ 0-tól 39-ig. Az 1-vel kezdődő tartomány közötti választáshoz egyszerűen add hozzá az 1-et a NextInt () módszer eredményéhez. Például, ha egy 1 és 40 közötti számot szeretne választani, akkor adjon egyet az eredményhez:

Ha a tartomány nagyobb, mint egy, akkor a következőkre van szüksége:

  • levonva a kezdő számot a felső határértékből, majd adj hozzá egyet.
  • add hozzá a kezdő számot a NextInt () módszer eredményéhez.

Például egy 5 és 35 közötti szám kiválasztásához, a felső határérték 35–5 + 1 = 31, és az eredményt 5-rel kell hozzáadni:

Mennyire véletlenszerű a véletlen osztály?

Hangsúlyoznom kell, hogy a Random osztály véletlenszerű számokat generál determinisztikus módon. A véletlenszerűséget előállító algoritmus egy magnak nevezett számon alapul. Ha a magszám ismert, akkor ki lehet számolni azokat a számokat, amelyeket az algoritmusból előállítanak. Ennek igazolására a számokat attól a naptól kezdve használom Neil Armstrong először lépett a Holdra, mint vetőmag számom (1969. július 20.):

Nem számít, ki futtatja ezt a kódot, a "véletlenszerű" számok sorrendje a következő lesz:

Alapértelmezés szerint a vetőmag száma, amelyet:

a jelenlegi idő milliszekundumban, 1970. január 1-je óta. Ez általában a legtöbb célhoz elegendő véletlenszerű számot eredményez. Ugyanakkor vegye figyelembe, hogy az ugyanazon milliszekundumban létrehozott két véletlenszám-generátor ugyanazokat a véletlenszerű számokat generálja.

Legyen óvatos, ha a Véletlen osztályt használja minden olyan alkalmazáshoz, amelynek biztonságos véletlenszám-generátorral kell rendelkeznie (például egy szerencsejáték-program). Lehetséges, hogy a vetőmag számát az alkalmazás futási ideje alapján lehet kitalálni. Általában azokban az alkalmazásokban, amelyekben a véletlen számok feltétlenül kritikusak, a legjobb, ha alternatívát talál a Random objektumra. A legtöbb alkalmazás esetében, ahol csak egy véletlenszerű elemre van szükség (pl. Kocka társasjátékhoz), akkor ez jól működik.

instagram story viewer