1

次のように配列に数値を挿入したい:

  1. 数値は 1 ~ 5 の間である必要があります
  2. 最初の数字を 1 にすることはできず、2 番目を 2 にすることもできません。
  3. 選択した番号を別のインデックスに挿入することはできません

例えば:

[1,2,3,4,5]

最初の数字をランダム化します: 1 [条件 2 が存在しません: 1 は最初のインデックスに存在できないため、再度ランダム化して 4 を得ました)。

新しい配列:

0 - 4
1 - 
2 - 
3 - 
4 - 

2番目のセルに数字をランダム化して4になったが、最初の要素に4が挿入された[条件3]ので、再度ランダム化して2になったが、2番目の要素に2はできない[条件2]ので、ランダム化する再び5を得た。

0 - 4
1 - 5
2 - 
3 - 
4 - 

数字(1〜5)でvecを初期化しようとしました:

var array = new Array();

array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;

var newarr = new Array();

function getRandomInt (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

$(document).ready(function() {
    for (var i = 0; i < 5; i++) {
        var rand;
        // check condition 2
        while((rand = getRandomInt(1, 5)) == (i+1));   
        newarr[i] = rand;
        //array.splice(i, 1);
    }

    // print the new array
    for (var i = 0; i < 5; i++) {
        alert((i+1) + '->' + newarr[i]);   
    }
});

コードに条件 3 を追加する必要があります。

どんな助けでも大歓迎です!

4

2 に答える 2

1
var values = [1,2,3,4,5];
var output = [];


for(var i=0;i<5;i++)
{
    do{
       var index = Math.floor(Math.random() * values.length);
    }while(values[index] == i +1);
    output[i] = values[index];
    values.splice(index, 1);
}

console.log(output);

デモ: http://jsfiddle.net/aJ8sH/

于 2013-09-27T09:30:49.723 に答える