How do I get a random number between two numbers say 20 to 30?
I tried:
val r = new scala.util.Random
r.nextInt(30)
This allows only upper bound value, but values always starts with 0. Is there a way to set lower bound value (to 20 in the example)?
Thanks!
You can use below. Both start and end will be inclusive.
val start = 20
val end = 30
val rnd = new scala.util.Random
start + rnd.nextInt( (end - start) + 1 )
In your case
val r = new scala.util.Random
val r1 = 20 + r.nextInt(( 30 - 20) + 1)
Sure. Just do
20 + r. nextInt(10)
Starting Scala 2.13
, scala.util.Random
provides:
def between(minInclusive: Int, maxExclusive: Int): Int
which used as follow, generates an Int
between 20 (included) and 30 (excluded):
import scala.util.Random
Random.between(20, 30) // in [20, 30[
同时将math.random
值(范围在0
到1
之间)缩放到感兴趣的区间,并将Double
在这种情况下转换为Int
,例如
(math.random * (30-20) + 20).toInt
You can use java.util.concurrent.ThreadLocalRandom as an option. It's preferable in multithreaded environments.
val random: ThreadLocalRandom = ThreadLocalRandom.current()
val r = random.nextLong(20, 30 + 1) // returns value between 20 and 30 inclusively
I would recommend using Random.between(a, b)
Note that a
in inclusive, and b
is exclusive.
Refer to documentation here .
val r = new scala.util.Random
// get 10 random numbers between 20 and 30 inclusive
(1 to 10).foreach(x => println(r.between(20, 30+1)))
Output
28
26
29
30
22
29
28
22
20
24
Process finished with exit code 0
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.