我怎样才能在两个数字之间得到一个随机数,比如20到30?我试过:
val r = new scala.util.Random r.nextInt(30)
这只允许上限值,但值总是从0开始。有没有办法设置下限值(在示例中为20)?谢谢!
bfhwhh0e1#
从Scala 2.13开始,scala.util.Random提供:def between(minInclusive: Int, maxExclusive: Int): Int如下所示,生成20(含)和30(不含)之间的Int:
Scala 2.13
scala.util.Random
def between(minInclusive: Int, maxExclusive: Int): Int
Int
import scala.util.Random Random.between(20, 30) // in [20, 30[
rmbxnbpk2#
您可以使用下面的。开始和结束都包括在内。
val start = 20 val end = 30 val rnd = new scala.util.Random start + rnd.nextInt( (end - start) + 1 )
就你而言
val r = new scala.util.Random val r1 = 20 + r.nextInt(( 30 - 20) + 1)
33qvvth13#
好啊。就这么做吧
20 + r. nextInt(10)
lyr7nygr4#
您可以使用java.util.concurrent.ThreadLocalRandom作为一个选项,它在多线程环境中更可取。
val random: ThreadLocalRandom = ThreadLocalRandom.current() val r = random.nextLong(20, 30 + 1) // returns value between 20 and 30 inclusively
f87krz0w5#
同样,将范围在0和1之间的math.random值缩放到感兴趣的间隔,并且在这种情况下将Double转换为Int,例如
0
1
math.random
Double
(math.random * (30-20) + 20).toInt
r3i60tvu6#
我建议使用Random.between(a, b)请注意,a包含在内,b不包含在内。请参阅此处的文档。
Random.between(a, b)
a
b
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)))
产出
28 26 29 30 22 29 28 22 20 24 Process finished with exit code 0
6条答案
按热度按时间bfhwhh0e1#
从
Scala 2.13
开始,scala.util.Random
提供:def between(minInclusive: Int, maxExclusive: Int): Int
如下所示,生成20(含)和30(不含)之间的
Int
:rmbxnbpk2#
您可以使用下面的。开始和结束都包括在内。
就你而言
33qvvth13#
好啊。就这么做吧
lyr7nygr4#
您可以使用java.util.concurrent.ThreadLocalRandom作为一个选项,它在多线程环境中更可取。
f87krz0w5#
同样,将范围在
0
和1
之间的math.random
值缩放到感兴趣的间隔,并且在这种情况下将Double
转换为Int
,例如r3i60tvu6#
我建议使用
Random.between(a, b)
请注意,
a
包含在内,b
不包含在内。请参阅此处的文档。
产出