随机打印数组中m个数

2020-09-21  本文已影响0人  小虫虫奇遇记

原理:取出第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++
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读