洗牌算法:数组随机排序
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));
}
}