Generování náhodných čísel v Javě

Generování řady náhodná čísla je jedním z těch společných úkolů, které se čas od času vynoří. v Jáva, lze toho dosáhnout jednoduše pomocí java.util. Náhodná třída.

První krok, jako při použití jakéhokoli API třída, je umístit příkaz import před začátkem třídy programu:

Dále vytvořte náhodný objekt:

Objekt Náhodné vám poskytuje jednoduchý generátor náhodných čísel. Metody objektu umožňují výběr náhodných čísel. Například metody nextInt () a nextLong () vrátí číslo, které je v rozsahu hodnot (negativních a pozitivních) typů dat int a long:

Vrácená čísla budou náhodně vybraná int a dlouhé hodnoty:

Sbíráme náhodná čísla z určitého rozsahu

Normálně musí být generována náhodná čísla z určitého rozsahu (např. Od 1 do 40 včetně). Za tímto účelem může metoda nextInt () přijmout také parametr int. Označuje horní mez rozsahu čísel. Horní mezní číslo však není zahrnuto jako jedno z čísel, které lze vybrat. To by mohlo znít matoucí, ale metoda nextInt () funguje od nuly nahoru. Například:

vybere pouze náhodné číslo od 0 do 39 včetně. Chcete-li vybrat z rozsahu, který začíná 1, jednoduše přidejte 1 do výsledku metody nextInt (). Chcete-li například vybrat číslo od 1 do 40 včetně, přidejte jedno do výsledku:

instagram viewer

Pokud rozsah začíná od vyššího čísla, než je jedno, budete muset:

  • mínus počáteční číslo od horního limitu a potom přidejte jedno.
  • přidejte počáteční číslo k výsledku metody nextInt ().

Například pro výběr čísla od 5 do 35 včetně, bude horní limit číslo 35-5 + 1 = 31 a do výsledku je třeba přidat 5:

Jak náhodné je náhodná třída?

Měl bych zdůraznit, že třída náhodně generuje náhodná čísla deterministickým způsobem. Algoritmus, který vytváří náhodnost, je založen na čísle zvaném semeno. Je-li známo počáteční číslo, je možné zjistit čísla, která budou z algoritmu vytvořena. Abych to dokázal, použiji čísla od data Neil Armstrong poprvé vstoupil na Měsíc jako číslo mého semene (20. července 1969):

Bez ohledu na to, kdo spustí tento kód, bude sekvence „náhodných“ čísel:

Ve výchozím nastavení je počet semen, který používá:

je aktuální čas v milisekundách od 1. ledna 1970. Normálně to bude produkovat dostatečně náhodná čísla pro většinu účelů. Všimněte si však, že dva generátory náhodných čísel vytvořené ve stejné milisekundě vygenerují stejná náhodná čísla.

Při použití třídy Random pro každou aplikaci, která musí mít zabezpečený generátor náhodných čísel (např. Hazardní program), buďte také opatrní. Může být možné uhodnout číslo semene na základě času, kdy je aplikace spuštěna. Obecně pro aplikace, kde jsou náhodná čísla absolutně kritická, je nejlepší najít alternativu k náhodnému objektu. Pro většinu aplikací, kde musí existovat určitý náhodný prvek (např. Kostky pro deskovou hru), funguje to dobře.