2012-11-29 5 views
0
내가 난수를 생성하고 (예의 도움이 필요합니다)

자바 스크립트 : 다중 차원 배열에 임의의 숫자와 저장소를 생성

[ 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; 

그렇지 않으면, 다차원 배열 ' s 멤버는 모두 같은 배열이됩니다. 따라서 프로그램이 다음 여섯 개의 난수를 얻으려고하면 배열이 여섯 개의 요소보다 오랫동안 길어지기 때문에 아무 일도 일어나지 않을 것입니다.

+0

유일한 해결책입니까? 배열을 비우기 위해 호출을 다시 작성할 필요없이 할 수있는 일이 있습니까? – Vish