原理:取出第1个数之后,将该数交换到数组最后一个位置n-1,下次取数范围在(0,n-2)之间,依次...,保证被取出的数不会再被访问就可。
Math.random()返回0到1之间的随机数。
fun randomM(arr: IntArray, m: Int) {
if (arr == null || arr.size == 0) {
return
}
val m = Math.min(arr.size, m)
var num = 0
while (num < m) {
var index = (Math.random() * (arr.size - 1 - num)).toInt()
Log.d("randomM", " " + arr[index])
var tmp = arr[index]
arr[index] = arr[arr.size - 1 - num]
arr[arr.size - 1 - num] = tmp
num++
}
}
网友评论