Nabavite slučajni broj u Kotlinu
1. Uvod
Ovaj kratki vodič pokazat će kako generirati slučajni broj pomoću Kotlina.
2. Korištenje slučajnog broja java.lang.Math
Najjednostavniji način generiranja slučajnog broja u Kotlinu je upotreba java.lang.Math. Ispod će primjer generirati slučajni dvostruki broj između 0 i 1.
@Test fun whenRandomNumberWithJavaUtilMath_thenResultIsBetween0And1 () {val randomNumber = Math.random () assertTrue {randomNumber> = 0} assertTrue {randomNumber <1}}
3. Korištenje slučajnog broja ThreadLocalRandom
Možemo i koristiti java.util.concurrent.ThreadLocalRandom za generiranje slučajne dvostruke, cijele ili duge vrijednosti. Cjelobrojne i duge vrijednosti generirane na ovaj način mogu biti pozitivne ili negativne.
ThreadLocalRandom je siguran u nitima i pruža bolje performanse u višenitnom okruženju jer pruža zasebnu Slučajno objekt za svaku nit i na taj način smanjuje svađu između niti:
@Test fun whenRandomNumberWithJavaThreadLocalRandom_thenResultsInDefaultRanges () {val randomDouble = ThreadLocalRandom.current (). NextDouble () val randomInteger = ThreadLocalRandom.current (). NextDorentLongLongLocalLongLocalLong assertTrue {randomDouble = Integer.MIN_VALUE} assertTrue {randomInteger = Long.MIN_VALUE} assertTrue {randomLong <Long.MAX_VALUE}}
4. Korištenje slučajnog broja Kotlin.js
Također možemo generirati slučajni dvostruki koristiti Matematika razred iz knjižnice kotlin.js.
@Test fun whenRandomNumberWithKotlinJSMath_thenResultIsBetween0And1 () {val randomDouble = Math.random () assertTrue {randomDouble> = 0} assertTrue {randomDouble <1}}
5. Slučajni broj u danom rasponu pomoću čistog Kotlina
Koristeći čisti Kotlin, možemo stvorite popis brojeva, promiješajte ga i zatim uzmite prvi elementt s tog popisa:
@Test fun whenRandomNumberWithKotlinNumberRange_thenResultInGivenRange () {val randomInteger = (1..12) .shuffled (). First () assertTrue {randomInteger> = 1} assertTrue {randomInteger <= 12}}
6. Slučajni broj u danom rasponu pomoću ThreadLocalRandom
ThreadLocalRandom predstavljen u odjeljku 3, također se može koristiti za generiranje slučajnog broja u određenom rasponu:
@Test zabave whenRandomNumberWithJavaThreadLocalRandom_thenResultsInGivenRanges () {val randomDouble = ThreadLocalRandom.current (). NextDouble (1.0, 10.0) val randomInteger = ThreadLocalRandom.current (). NextIntrandom.curL (1). 10) assertTrue {randomDouble> = 1} assertTrue {randomDouble = 1} assertTrue {randomInteger = 1} assertTrue {randomLong <10}}
7. Pseudo vs sigurni generatori slučajnih brojeva
Standardne JDK implementacije java.util.Slučajno upotrijebite Linearni analogni generator za pružanje slučajnih brojeva. Problem ovog algoritma je što nije kriptografski jak, a napadači bi mogli predvidjeti njegove izlaze.
Da biste prevladali ovaj problem, trebali bismo koristiti java.security.SecureRandom na mjestima gdje nam je potrebna dobra sigurnost:
zabavno whenRandomNumberWithJavaSecureRandom_thenResultsInGivenRanges () {val secureRandom = SecureRandom () secureRandom.nextInt (100) assertTrue {randomLong> = 0} assertTrue {randomLong <100}}
SecureRandom proizvodi kriptografski jake slučajne vrijednosti pomoću kriptografski jakog generatora pseudo-slučajnih brojeva (CSPRNG).
Aplikacije ne bi trebale koristiti druge načine generiranja sigurnog slučajnog broja na mjestima povezanim sa sigurnošću.
8. Zaključak
U ovom smo članku naučili nekoliko načina za generiranje slučajnog broja u Kotlinu.
Kao i uvijek, sav kôd predstavljen u ovom vodiču možete pronaći na GitHub-u.