scala——隨機數生成
阿新 • • 發佈:2018-12-27
(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
}