【发布时间】:2017-06-09 05:34:04
【问题描述】:
对不起,如果这个问题非常具体;不过,我不知道还能去哪里问它!
我正在解决一些问题,并且我找到了 Fisher-Yates Shuffle,但我想知道我想到的第一个 shuffle 是否是统一的?我不是最擅长概率……或数学……哈。
这个想法很简单;对于数组中尽可能多的元素,随机选择两个并将它们相互交换。
function inPlaceShuffle(arr) {
const floor = 0,
ceil = arr.length - 1;
let i = arr.length;
while (i > 0) {
swap(arr, getRandom(floor, ceil), getRandom(floor, ceil));
i--;
}
return arr;
}
function swap(arr, firstIndex, secondIndex) {
const temp = arr[firstIndex];
arr[firstIndex] = arr[secondIndex];
arr[secondIndex] = temp;
}
function getRandom(floor, ceil) {
floor = Math.ceil(floor);
ceil = Math.floor(ceil);
return Math.floor(Math.random() * (ceil - floor + 1)) + floor;
}
【问题讨论】:
标签: javascript algorithm shuffle uniform