Random

fun Random(seed: Int): Random(source)

Returns a repeatable random number generator seeded with the given seed Int value.

Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.

Note: Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return a sequence of values different from the current one for a given seed.

On JVM the returned generator is NOT thread-safe. Do not invoke it from multiple threads without proper synchronization.

Since Kotlin

1.3

Samples

import kotlin.math.sin
import kotlin.random.Random
import kotlin.test.assertTrue

fun main() { 
   //sampleStart 
   fun getRandomList(random: Random): List<Int> =
    List(10) { random.nextInt(0, 100) }

val randomValues1 = getRandomList(Random(42))
// prints the same sequence every time
println(randomValues1) // [33, 40, 41, 2, 41, 32, 21, 40, 69, 87]

val randomValues2 = getRandomList(Random(42))
// random with the same seed produce the same sequence
println("randomValues1 == randomValues2 is ${randomValues1 == randomValues2}") // true

val randomValues3 = getRandomList(Random(0))
// random with another seed produce another sequence
println(randomValues3) // [14, 48, 57, 67, 82, 7, 61, 27, 14, 59] 
   //sampleEnd
}

fun Random(seed: Long): Random(source)

Returns a repeatable random number generator seeded with the given seed Long value.

Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.

Note: Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return a sequence of values different from the current one for a given seed.

On JVM the returned generator is NOT thread-safe. Do not invoke it from multiple threads without proper synchronization.

Since Kotlin

1.3

Samples

import kotlin.math.sin
import kotlin.random.Random
import kotlin.test.assertTrue

fun main() { 
   //sampleStart 
   fun getRandomList(random: Random): List<Int> =
    List(10) { random.nextInt(0, 100) }

val randomValues1 = getRandomList(Random(42))
// prints the same sequence every time
println(randomValues1) // [33, 40, 41, 2, 41, 32, 21, 40, 69, 87]

val randomValues2 = getRandomList(Random(42))
// random with the same seed produce the same sequence
println("randomValues1 == randomValues2 is ${randomValues1 == randomValues2}") // true

val randomValues3 = getRandomList(Random(0))
// random with another seed produce another sequence
println(randomValues3) // [14, 48, 57, 67, 82, 7, 61, 27, 14, 59] 
   //sampleEnd
}