scala--生成隨機數

(new util.Random).nextInt(n) 返回一個0-n(不包括n) 的隨機數 
好比:數組

scala> (new util.Random).nextInt(3)
res7: Int = 1
  • 1
  • 2

返回一個[0, 2]的隨機數dom

scala生成一組不重複的隨機數 
一、循環獲取隨機數,再到 list中找,若是沒有則添加scala

def randomNew(n:Int)={
  var resultList:List[Int]=Nil
  while(resultList.length<n){
    val randomNum=(new Random).nextInt(20)
    if(!resultList.exists(s=>s==randomNum)){
      resultList=resultList:::List(randomNum)
    }
  }
  resultList
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

這種只適合數量比較少的狀況 
二、每次生成一個隨機數index,將index做爲數組下標取相應的元素,而後去除該元素,下一次生成隨機數的範圍減1code

def randomNew2(n:Int)={
  var arr= 0 to 20 toArray
  var outList:List[Int]=Nil
  var border=arr.length//隨機數範圍
  for(i<-0 to n-1){//生成n個數
    val index=(new Random).nextInt(border)
    println(index)
    outList=outList:::List(arr(index))
    arr(index)=arr.last//將最後一個元素換到剛取走的位置
    arr=arr.dropRight(1)//去除最後一個元素
    border-=1
  }
  outList
}

scala>val r = scala.util.Randomast

scala>r.nextInt                     //生成隨機數es7

scala>r.nextInt(100)         //生成100之內的隨機數(給隨機數設置範圍)隨機數

相關文章
相關標籤/搜索