2012-11-29 59 views
0

我試圖來產生隨機數並存儲在多維數組○號(需要的例子幫助)的Javascript:產生隨機數,並存儲在多維數組

[ 8, 52, 9, 34, 51, 19 ] 
[ 8, 52, 9, 34, 51, 19 ] 
[ 8, 52, 9, 34, 51, 19 ] 
  1. 我想什麼實現是從數組中生成一組6個數字並將它們存儲在numOfResults集合中。
  2. 我想避免在每個集合中生成重複的數字。

當前的代碼生成集,但3套是相同的。

[ [ 8, 52, 9, 34, 51, 19 ], [ 8, 52, 9, 34, 51, 19 ], [ 8, 52, 9, 34, 51, 19 ] ] 

我的代碼如下:

var yourNum = { 
    yP : [3, 5, 8, 9, 12, 14, 17, 19, 21, 23, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 48, 50, 51, 52, 53, 54, 55, 57, 59], 
    numOfResults: [], 
    yPvalue : [], 
    generateRandom: function() { 
     var nRandom = Math.floor(Math.random() * (yourNum.yP.length)); 
     return nRandom; 
    } 
}; 

var genResults = function (num) { 
    var count = num; 
    for (var i = 0; i < count; i++) { 
     for (var j = 0; j < 6; j++) { 
      if(yourNum.yPvalue.length < 6) { 
       yourNum.yPvalue.push(yourNum.yP[yourNum.generateRandom()]); 
      } 
     } 
     yourNum.numOfResults[i] = yourNum.yPvalue; 
    } 
    console.log("---------NEW---------"); 
    console.log(yourNum.numOfResults); 
}; 

//var random = Math.floor(Math.random() * (yourNum.yP.length)); 
//var yPvalue = yourNum.yP[random]; 
//console.log("Your random number" + " " + random + " " + yPvalue); 

genResults(3); 

回答

2

你需要

yourNum.yPvalue = []; 

yourNum.numOfResults[i] = yourNum.yPvalue; 

否則,多維數組」所有的成員都將是相同的陣列。因此,當你的程序試圖獲得接下來的六個隨機數時,什麼都不會發生,因爲它們會使數組長度超過六個元素,這是你的程序所防止的。

+0

這是唯一的解決方案嗎?有什麼我可以做,而不必重寫一個調用來清空數組。 – Vish