1. 程式人生 > >scala——隨機數生成

scala——隨機數生成

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

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

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

scala生成一組不重複的隨機數
1、迴圈獲取隨機數,再到 list中找,如果沒有則新增

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 }

這種只適合數量比較少的情況
2、每次生成一個隨機數index,將index作為陣列下標取相應的元素,然後去除該元素,下一次生成隨機數的範圍減1

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 }