2012-05-11 58 views
2

我有以下代碼jQuery的隨機數學不重複以前的變種

var link = []; 
link[0] = "css/pink/pink.css"; 
link[1] = "css/blue/blue.css"; 
link[3] = ""; 
function changeStyle() { 
var ran = Math.floor(Math.random() * link.length); 
    var style = link[ran]; 
    jQuery('link[id=style-switch]').attr({href : style}); 
} 

它的工作,雖然我不確定如何讓它不重複以前的選擇,直到他們已全部通過循環。有任何想法嗎?

+0

我只是簡單地循環1到1,而不是試圖隨機。 –

+1

'Math.random()'是javascript,而不是jQuery。 – jrummell

回答

2

您可以使用陣列的洗牌(數組元素基本上是隨機排列) - 這將需要保持一個獨立的,洗牌陣列雖然和索引到它。以下是Fisher-Yates shuffle in Javascript的示例。

+0

艾依依,這有點複雜,難道你不說嗎?所有OP需要做的就是堅持以前選擇的隨機值,並確保他剛剛選擇的隨機值不在該數組中。 –

+0

不是真的,你爲什麼這麼認爲? – BrokenGlass

+0

太長的單詞。 :(但實際上,這是一個簡單的問題,當你需要的是另外一個數組時,沒有必要保留一個混洗數組和索引,特別是因爲這裏的可能性非常少,速度不是問題。 –