方法一. 利用 sort 排序,排序条件为:0.5 - Math.random()
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
Array.prototype.toRandom = function() {
let tempArr = this.slice();
tempArr.sort(() => 0.5 - Math.random());
return tempArr;
}
Math.random() 函数返回一个浮点, 伪随机数在范围[0,1)。
所以,得到一个两数之间的随机数,范围 [min,max):
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
得到一个两数之间的随机整数,包括两个数在内:
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
方法二. 让数组中的每一项与后面随机选中的项交换
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
Array.prototype.toRandom = function() {
let tempArr = this.slice();
let length = tempArr.length;
for (let i = 0; i < length; i++) {
let index = parseInt(Math.random() * (length - i)) + i;
if (index != i) {
let temp = tempArr[i];
tempArr[i] = tempArr[index];
tempArr[index] = temp;
}
}
return tempArr;
}