无重复的随机数组失败

时间:2016-07-01 10:49:05

标签: javascript arrays

如何使用fisher yate shuffle方法生成唯一数组项?我发现下面的代码但没有用。

function shuffle(array) {
    var i = array.length,
        j = 0,
        temp;

    while (i--) {

        j = Math.floor(Math.random() * (i+1));

        // swap randomly chosen element with current element
        temp = array[i];
        array[i] = array[j];
        array[j] = temp;

    }

    return array;
}

var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]);

console.log(ranNums)

2 个答案:

答案 0 :(得分:1)

在这个小提琴中看到它工作得很好而且很酷。 http://jsfiddle.net/9RxLM/6010/ 实际上你的问题是什么?

  function shuffle(array) {
var i = array.length,
    j = 0,
    temp;

while (i--) {

    j = Math.floor(Math.random() * (i+1));

    // swap randomly chosen element with current element
    temp = array[i];
    array[i] = array[j];
    array[j] = temp;

}

return array;
   }

    var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]);

   alert(ranNums)

答案 1 :(得分:0)

你读过fisher yate shuffle doc吗?

如果没有阅读有关您要使用的文档,请务必不要问。 您刚刚复制并粘贴了sais的示例:

以下是JavaScript中的实现内容,不是您应该使用它:

进入网页阅读,然后询问你是否不理解某事(我必须坚持;阅读后):

https://bost.ocks.org/mike/shuffle/

问候!