Updated May 29, 2023
Introduction to Scala Random
The Scala Random function generates random numbers or characters in Scala. To generate the Random numbers over Scala, we use the Random process with Scala.util.Random class. The Random number generated can be anything,, be it Integer, Float, Double, or Char. This random no is important for various-level applications such as Validation. So it is used for the Random numbers generation in our Scala Application.
The application generates random numbers using Scala.util.Random class. We need to import the class, and the methods like nextInt, and nextFloat to generate the numbers.
val r = scala.util.Random r: util.Random.type = scala.util.Random$@7889a1ac r.nextInt res1: Int = 1825881164 r.nextInt(100) res2: Int = 99 r.nextFloat res3: Float = 0.10983747
Working of Scala Random with Examples
This function takes up the random function to generate numbers for processing; it generally uses the Linear congruential generator; this algorithm works on choosing the random number. We can also select the range over which we want to generate the number over. We will see the random number generation with some examples.
val r = scala.util.Random r: util.Random.type = scala.util.Random$@7889a1ac r.nextInt res0: Int = 2123631858 r.nextInt res1: Int = -737405300 r.nextInt res2: Int = 377538368
Every Time the code is run or this function is called we will get the set of different values in the usual pattern without following any rule or pattern. Even we can also set an inclusive as well as an exclusive limit for the random number we want to generate.
Note: By default, the inclusive limit is 0 so we can also set only the exclusive one.
r.nextInt(100) res3: Int = 64 r.nextInt(100) res4: Int = 91 r.nextInt(100) res5: Int = 39 r.nextInt(100) res6: Int = 38
We can also select the Random Float value by the method NextFloat.So the range will lie from 0.0 decimal value to 1. Let us check that with some example:
r.nextFloat res8: Float = 0.59556204 r.nextFloat res9: Float = 0.8322488 r.nextFloat res10: Float = 0.6295014 r.nextFloat res11: Float = 0.69067985 r.nextFloat res12: Float = 0.7225474 r.nextFloat res13: Float = 0.9606658 r.nextFloat res14: Float = 0.77049905
Same as Float we can also create random numbers for Double Values.
r.nextDouble res18: Double = 0.34614360601266014 r.nextDouble res19: Double = 0.38648718502076507 r.nextDouble res20: Double = 0.31311541536121046 r.nextDouble res21: Double = 0.7410149595118738
It also prints the values between 0 to 1. The Boolean value can also use the same Random value and yields result based on Boolean Values.
r.nextBoolean res15: Boolean = true r.nextBoolean res16: Boolean = false r.nextBoolean res17: Boolean = false
Even the Scala Random function is used to generate the characters also Randomly. We can use the method nextprintableChar from the Random class method and generates characters accordingly. Let us check that with Example:
r.nextPrintableChar res24: Char = K r.nextPrintableChar res25: Char = g r.nextPrintableChar res26: Char = k r.nextPrintableChar res27: Char = K r.nextPrintableChar res28: Char = ' r.nextPrintableChar res29: Char = t
So it prints all the CharatcersRandomly. It is possible that the same character or integer value can come many times; there is no rule for the numbers not to be repeated.
Note: This Random function is widely used for Pattern Verification, security applications like Captcha, and other things.
We can also use the Random function over a distribution. One known function that works with it is the Gaussian function. The Gaussian Function takes the Random data over the Gaussian Distribution and prints data accordingly. It returns a random number with a mean of 0 and a deviation of 1. To change this Gaussian value, we need to provide that explicitly.
r.nextGaussian res35: Double = 1.301074019733114 r.nextGaussian res36: Double = 0.37365693728172494 r.nextGaussian res37: Double = -0.2868649145689896 r.nextGaussian res38: Double = 2.108673488282321
This is what it generates randomly over a Gaussian Distribution.
We can also merge random functions and create a List or store them in the collection we want. Let us check that with Example:
for(i<- 0 to r.nextInt(4)) yield r.nextDouble res40: scala.collection.immutable.IndexedSeq[Double] = Vector(0.020069508131527525) for(i<- 0 to r.nextInt(4)) yield r.nextDouble res41: scala.collection.immutable.IndexedSeq[Double] = Vector(0.6992494049547558) for(i<- 0 to r.nextInt(10)) yield r.nextDouble res42: scala.collection.immutable.IndexedSeq[Double] = Vector(0.9844960499444084, 0.06772285166187964, 0.9797605964534618, 0.6239437080597234, 0.015670036830630618, 0.8530556031658404) for(i<- 0 to r.nextInt(10)) yield r.nextDouble res43: scala.collection.immutable.IndexedSeq[Double] = Vector(0.0775137969760199, 0.3150585897780521, 0.5429361580144657, 0.7427799136029297, 0.7595647379710992, 0.6097524030728557, 0.5555829149364843, 0.031480808153179884, 0.9486129909099824, 0.1519146584718376) for(i<- 0 to r.nextInt(10)) yield r.nextPrintableChar res44: scala.collection.immutable.IndexedSeq[Char] = Vector(Q, q, n, ", [, r, K, 0, B) for(i<- 0 to r.nextInt(10)) yield r.nextPrintableChar res45: scala.collection.immutable.IndexedSeq[Char] = Vector(%, ?) for(i<- 0 to r.nextInt(10)) yield r.nextPrintableChar res46: scala.collection.immutable.IndexedSeq[Char] = Vector(m, =) for(i<- 0 to r.nextInt(3)) yield r.nextPrintableChar res47: scala.collection.immutable.IndexedSeq[Char] = Vector(6) for(i<- 0 to r.nextInt(10)) yield r.nextPrintableChar res48: scala.collection.immutable.IndexedSeq[Char] = Vector([, =, V, !, Q, f, 9, E)
Here we can see how we merged the different functions of Random and generated results accordingly.
As a result, this function is used to generate random values throughout the Scala application that may be required repeatedly.
From the above article, we saw how we could use the Scala Random function to generate random values and use it over the Scala Application. We also saw the various type by which we can create a random number. So it is a very good and important method used in Scala Programming for various Scala works.
We hope that this EDUCBA information on “Scala Random” was beneficial to you. You can view EDUCBA’s recommended articles for more information.