簡體   English   中英

獲取Scala中兩個數字之間的隨機數

[英]Get random number between two numbers in Scala

我如何獲得兩個數字之間的隨機數,比如 20 到 30?

我試過:

val r = new scala.util.Random
r.nextInt(30)

這只允許上限值,但值始終以 0 開頭。有沒有辦法設置下限值(示例中為 20)?

謝謝!

你可以在下面使用。 開始和結束都將是包容性的。

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)

當然。 做就是了

20 + r. nextInt(10)

啟動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[

同時將math.random值(范圍在01之間)縮放到感興趣的區間,並將Double在這種情況下轉換為Int ,例如

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

您可以使用java.util.concurrent.ThreadLocalRandom作為選項。 在多線程環境中最好。

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

我建議使用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)))

Output

28
26
29
30
22
29
28
22
20
24

Process finished with exit code 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM