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:
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.