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

时间:2016-09-09 01:39:57

标签: scala random

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

我试过了:

<!--main.html-->
<head>
</head>
<body>

  <form action="submit">
    <input type="text" id="myVal">
    <div id="react-info"></div>
  </form>
  <footer>
    <button id="startButton">START</button>
  </footer>
</body>

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

谢谢!

5 个答案:

答案 0 :(得分:25)

您可以在下方使用。开始和结束都将是包容性的。

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)

答案 1 :(得分:16)

不确定。只是做

20 + r. nextInt(10)

答案 2 :(得分:6)

Scala 2.13scala.util.Random开始提供

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

如下使用,它在20(包括)和30(排除)之间生成一个Int

import scala.util.Random
Random.between(20, 30) // in [20, 30[

答案 3 :(得分:3)

同时将math.random值(01之间的范围缩放到感兴趣的区间,并将Double转换为Int,例如

(math.random * (30-20) + 20).toInt

答案 4 :(得分:2)

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

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