OneYX
11/22/2017 - 7:16 AM

洗牌算法:数组随机排序

洗牌算法:数组随机排序

Array.prototype.shuffle = function () {
    var arr = this
    for (var i = arr.length - 1; i >= 0; i--) {
        var randomIdx = Math.floor(Math.random() * (i + 1))
        var itemAtIdx = arr[randomIdx]
        arr[randomIdx] = arr[i]
        arr[i] = itemAtIdx
    }
    return arr
}
var tempArr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(tempArr.shuffle())//[ 5, 9, 6, 8, 4, 7, 3, 1, 2 ]

import java.util.*;   
/**  
 * 生成不重复随机数的一种算法。  
 *   
 * @author 赵学庆,Java世纪网(java2000.net)  
 *   
 */   
public class T {   
  public static void main(String[] args) {   
    // 要排序的一组数字   
    int[] seed = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };   
    int len=seed.length;  
    int[] result= new int[len];   
    Random random = new Random();   
    for (int i = 0; i < len; i++) {   
      // 得到一个位置   
      int r = ran.nextInt(len - i);   
      // 得到那个位置的数值   
      result[i] = seed[r];   
      // 将最后一个未用的数字放到这里   
      seed[r] = seed[len - 1 - i];   
    }   
    System.out.println("result:" + Arrays.toString(result));   
  }   
}