0

乱数を生成し、その数を多次元配列 o に格納しようとしています (例の助けが必要です)

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

1 に答える 1

2

あなたが必要

yourNum.yPvalue = [];

yourNum.numOfResults[i] = yourNum.yPvalue;

それ以外の場合、多次元配列のメンバーはすべて同じ配列になります。したがって、プログラムが次の 6 つの乱数を取得しようとしても、配列が 6 つの要素の長さよりも長くなるため、何も起こりません。

于 2012-11-29T03:42:47.910 に答える