Получите случайное число между двумя числами в Scala
Как получить случайное число между двумя номерами, например, от 20 до 30?
Я пробовал:
val r = new scala.util.Random
r.nextInt(30)
Это позволяет использовать только значение верхней границы, но значения всегда начинаются с 0. Существует ли способ установить значение нижней границы (до 20 в примере)?
Спасибо!
Ответы
Ответ 1
Вы можете использовать ниже. И начало, и конец будут включены.
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)
Ответ 2
Конечно. Просто сделайте
20 + r. nextInt(10)
Ответ 3
Также масштабирование math.random
значение, которое колеблется между 0
и 1
до интересующего интервала и преобразует Double
в этом случае в Int
, например
(math.random * (30-20) + 20).toInt
Ответ 4
Запуск Scala 2.13
, scala.util.Random
обеспечивает:
def between(minInclusive: Int, maxExclusive: Int): Int
который используется следующим образом, генерирует Int
между 20 (включенными) и 30 (исключенными):
import scala.util.Random
Random.between(20, 30) // in [20, 30[
Ответ 5
Вы можете использовать java.util.concurrent.ThreadLocalRandom в качестве опции. Это предпочтительнее в многопоточных средах.
val random: ThreadLocalRandom = ThreadLocalRandom.current()
val r = random.nextLong(20, 30 + 1) // returns value between 20 and 30 inclusively