上班途中心血来潮想出来的一种高效随机排列算法,利用随机数加权然后排序,是不是很简单?
附上JavaScript代码
function getRandomList(arr) {
let maxWeight = 10 * arr.length;
let getRandom = function() {
return Math.ceil(maxWeight * Math.random());
}
let list = [];
for(let i in arr) {
list.push({
weight: getRandom(),
value: arr[i]
});
}
list.sort(function(a, b) {
return a.weight > b.weight;
});
let ans = [];
for(let i in list) {
ans.push(list[i].value);
}
return ans;
}