在Scala中获取两个数字之间的随机数

vij*_*jay 21 random scala

如何获得两个数字之间的随机数,比如20到30?

我试过了:

val r = new scala.util.Random
r.nextInt(30)
Run Code Online (Sandbox Code Playgroud)

这只允许上限值,但值始终从0开始.有没有办法设置下限值(在示例中为20)?

谢谢!

aba*_*hel 32

你可以在下面使用.开始和结束都将是包容性的.

val start = 20
val end   = 30
val rnd = new scala.util.Random
start + rnd.nextInt( (end - start) + 1 )  
Run Code Online (Sandbox Code Playgroud)

在你的情况下

val r = new scala.util.Random
val r1 = 20 + r.nextInt(( 30 - 20) + 1)
Run Code Online (Sandbox Code Playgroud)


egp*_*ice 18

当然.做就是了

20 + r. nextInt(10)
Run Code Online (Sandbox Code Playgroud)


Xav*_*hot 9

开始Scala 2.13scala.util.Random提供:

def between(minInclusive: Int, maxExclusive: Int): Int

如下所示,生成Int20(包括)到30(排除)之间的值:

import scala.util.Random
Random.between(20, 30) // in [20, 30[
Run Code Online (Sandbox Code Playgroud)


J-A*_*lex 7

您可以使用java.util.concurrent.ThreadLocalRandom作为选项。在多线程环境中更可取。

val random: ThreadLocalRandom = ThreadLocalRandom.current()
val r = random.nextLong(20, 30 + 1) // returns value between 20 and 30 inclusively
Run Code Online (Sandbox Code Playgroud)


elm*_*elm 5

也缩放math.random值之间的范围内01所关心的时间间隔,并转换Double在这种情况下Int,例如

(math.random * (30-20) + 20).toInt
Run Code Online (Sandbox Code Playgroud)