Få et tilfældigt nummer i Kotlin

1. Introduktion

Denne korte tutorial viser, hvordan man genererer et tilfældigt tal ved hjælp af Kotlin.

2. Tilfældigt nummer ved hjælp af java.lang.Math

Den nemmeste måde at generere et tilfældigt tal på i Kotlin er at bruge java.lang.Math. Nedenstående eksempel genererer et tilfældigt dobbelt tal mellem 0 og 1.

@Test sjovt nårRandomNumberWithJavaUtilMath_thenResultIsBetween0And1 () {val randomNumber = Math.random () assertTrue {randomNumber> = 0} assertTrue {randomNumber <1}}

3. Tilfældigt nummer ved hjælp af ThreadLocalRandom

Vi kan også bruge java.util.concurrent.ThreadLocalRandom for at generere en tilfældig dobbelt-, hel- eller lang værdi. Hele tal og lange værdier genereret på denne måde kan være både positive eller negative.

ThreadLocalRandom er trådsikker og giver bedre ydeevne i et multitrådet miljø fordi det giver en separat Tilfældig objekt til hver tråd og reducerer dermed striden mellem tråde:

@Test-sjov nårRandomNumberWithJavaThreadLocalRandom_thenResultsInDefaultRanges () {val randomDouble = ThreadLocalRandom.current (). NextDouble () val randomInteger = ThreadLocalRandom.current (). NextInt () val randomLong = ThreadLocalRandom. assertTrue {randomDouble = Integer.MIN_VALUE} assertTrue {randomInteger = Long.MIN_VALUE} assertTrue {randomLong <Long.MAX_VALUE}}

4. Tilfældigt tal ved hjælp Kotlin.js

Vi kan også generere en tilfældig dobbelt bruger Matematik klasse fra kotlin.js-biblioteket.

@Test sjov nårRandomNumberWithKotlinJSMath_thenResultIsBetween0And1 () {val randomDouble = Math.random () assertTrue {randomDouble> = 0} assertTrue {randomDouble <1}}

5. Tilfældigt tal i et givet interval ved hjælp af ren Kotlin

Ved hjælp af ren Kotlin kan vi opret en liste med tal, bland den og tag de første element fra denne liste:

@Test sjovt nårRandomNumberWithKotlinNumberRange_thenResultInGivenRange () {val randomInteger = (1..12). Shuffled (). First () assertTrue {randomInteger> = 1} assertTrue {randomInteger <= 12}}

6. Tilfældigt tal i et givet interval ved hjælp af ThreadLocalRandom

ThreadLocalRandom præsenteret i afsnit 3 kan også bruges til at generere et tilfældigt tal i et givet interval:

@Test fun whenRandomNumberWithJavaThreadLocalRandom_thenResultsInGivenRanges () {val randomDouble = ThreadLocalRandom.current (). NextDouble (1.0, 10.0) val randomInteger = ThreadLocalRandom.current (). NextInt (1, 10) val randomLong = Thom. 10) assertTrue {randomDouble> = 1} assertTrue {randomDouble = 1} assertTrue {randomInteger = 1} assertTrue {randomLong <10}}

7. Pseudo vs sikre tilfældige talgeneratorer

Standard JDK implementeringer af java.util. tilfældighed Brug en Lineær Congruential Generator til at give tilfældige tal. Problemet med denne algoritme er, at den ikke er kryptografisk stærk, og dens output kunne forudsiges af angribere.

For at løse dette problem, vi skal bruge java.security.SecureRandom på steder, hvor vi har brug for god sikkerhed:

sjovt nårRandomNumberWithJavaSecureRandom_thenResultsInGivenRanges () {val secureRandom = SecureRandom () secureRandom.nextInt (100) assertTrue {randomLong> = 0} assertTrue {randomLong <100}}

SecureRandom producerer kryptografisk stærke tilfældige værdier ved hjælp af en kryptografisk stærk pseudo-tilfældig talgenerator (CSPRNG).

Applikationer bør ikke bruge andre måder at generere et sikkert tilfældigt tal på steder relateret til sikkerhed.

8. Konklusion

I denne artikel har vi lært et par måder at generere et tilfældigt tal på Kotlin.

Som altid kan al kode, der præsenteres i denne vejledning, findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found