2016-01-21 51 views
0

我需要從陣列選擇一個元件10周不同的時間,而不在該過程中挑選任何重複:隨機挑選,而不重複

function raffle(){ 
    question_pool = Array(a,b,c,d,e,f,g,h,i,j,k,l,m); 
    question = question_pool[Math.floor(Math.random()*question_pool.length)]; 
} 

這是我的函數raflle()中,當我執行它,我可能會得到兩次結果。

這裏是方法:

question_pool = Array(a,b,c,d,e,f,g,h,i,j,k,l,m); 
maximum = 10; 
minimum = 0; 
question_stack = Math.floor(Math.random() * question_pool.length - minimum); 
minimum = Math.min(minimum + 1, maximum); 
question = question_pool.splice(question_stack,1); 
question_pool.push(question); 
+1

不要將它推回到陣列中。一旦你刪除它,你不能再選擇 – charlietfl

回答

0

使用剪接刪除從問題池中選擇的問題。一旦所有問題都已繪製完畢,請繼續。

var question_pool = Array("a","b","c","d","e","f","g","h","i","j","k","l","m"); 
do{ 
    var id = Math.floor(Math.random() * question_pool.length);; 
    var question = question_pool[id]; 
    question_pool.splice(id, 1); 
    console.log(question); 
}while(question_pool.length > 0); 

https://jsfiddle.net/nc67chwn/

隨後,您可以創建question_pool陣列和拼接元素的深克隆的,如果你想保留原始問題分組。

+0

謝謝! PERFEKT。似乎是合法的! – fabuchao