描述:任意给你一个数组,请给出一个乱序算法,确保乱序后数组的概率平均。
样例:[1, 2, 3]这个数组,乱序情况有六种123,132,213,231,312,321,这六种情况的平均出现次数均为17%左右。
请实现这个乱序算法,并测试1w次后,每个乱序排列的概率相同。
提示:Fisher–Yates算法
测试代码:
// 冴羽
var times = 100000;
var res = {};
for (var i = 0; i < times; i++) {
var arr = shuffle([1, 2, 3]);
var key = JSON.stringify(arr);
res[key] ? res[key]++ : res[key] = 1;
}
// 为了方便展示,转换成百分比
for (var key in res) {
res[key] = res[key] / times * 100 + '%'
}
console.log(res)
描述:任意给你一个数组,请给出一个乱序算法,确保乱序后数组的概率平均。
样例:[1, 2, 3]这个数组,乱序情况有六种123,132,213,231,312,321,这六种情况的平均出现次数均为17%左右。
请实现这个乱序算法,并测试1w次后,每个乱序排列的概率相同。
提示:Fisher–Yates算法
测试代码: