我希望在下一个数组中插入数字:
例如:
1,2,3,4,5
我将第一个数字随机化:1[条件2不存在:1不能在第一个索引中,所以我再次随机化,得到4)。
所以新的数组:
0 - 4
1 -
2 -
3 -
4 -
我把一个数字随机化到第二个单元,得到4个,但是4被插入到第一个元素条件3,所以我再次随机化,得到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,
任何帮助都很感激!
发布于 2013-09-27 01:25:12
试试这个:
$(document).ready(function() {
for (var i = 0; i < 5; i++) {
var rand;
// check condition 2
while((rand = getRandomInt(1, 5)) == (i+1) || $.inArray(rand, newarr)) // Also check, if generated number is already in the array
newarr[i] = rand;
//array.splice(i, 1);
}
// print the new array
for (var i = 0; i < 5; i++) {
alert((i+1) + '->' + newarr[i]);
}
});
但要小心。例如,如果生成这个数组:
[2, 1, 4, 3]
因为唯一可用的数字是5,所以最终会有一个没完没了的while循环,但是不能将它插入到那个位置。
发布于 2013-09-27 01:30:49
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);
https://stackoverflow.com/questions/19047128
复制