2016-07-01 49 views
-3

如何使用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) 
+0

「無效」意味着什麼? – str

+0

它工作正常... –

回答

0

您是否閱讀過fisher yate shuffle doc?

如果沒有閱讀關於您要使用的文檔,您一定不能問。 你只是複製和粘貼的是最高審計機關的例子:

下面介紹一下實現看起來像在JavaScript中,不是說你應該使用它:

轉到網頁和閱讀,那麼只有一個要求,如果你不不懂的東西(我必須堅持;後讀取):

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

商祺!

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)