Массив случайных чисел
Нужно из большого массива выбрать определенное количество случайных значений и записать в новый массив и вернуть его, только в новом не должны быть повторения.
написал вот такое
var uCatsOut=[
['7','1','0'],
['8','1','2'],
['10','1','0'],
['11','1','0'],
['12','1','1'],
['13','1','0'],
['22','1','0']
];
function getRandomInt(min, max)
{
var randNum;
randNum = Math.floor(Math.random() * (max - min + 1)) + min;
return randNum;
}
function randomIdsOfCat(catslength){
var num;
var randNumOld = [];
for(i=0; i<catslength; i++){
num = getRandomInt(0, uCatsOut.length-1);
if(randNumOld.length > 0){
for(k = 0; k < randNumOld.length; k++){
if(num == randNumOld[k]){
k=0;
num = getRandomInt(0, uCatsOut.length-1);
}
}
}
randNumOld[i] = num;
}
return randNumOld;
}
var s = randomIdsOfCat(6);
alert (s);
что то не всегда получается, как будто недопроверяет последний элемент массива, потому что повторения попадают в конец. Не могу домучать, может подскажете? |
function randomIdsOfCat(catslength){
var arr = [];
for(i = 0;i<catslength;i++) {
while(arr.indexOf(r = getRandomInt(0, uCatsOut.length)) != -1);
arr.push(r);
}
return arr;
}
|
var shiffle = function (array, max) {
var i = array.length;
while(i--)
array[i] == array[i-1] && array.splice(i, 1);
return array.sort(function() {
return .5 - Math.random();
}).splice(0, max);
};
alert(shiffle([1, 1, 1, 2, 2, 4, 3, 3, 3, 5, 5, 5, 7, 8, 9], 5));
|
:) спасибо, долго бы я мучался)) недавно программирование учу, прямолинейно рассуждаю
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
я бы сказал, что кодер !== программист :) это более правдоподобно. Логика программиста не всегда доступна кодеру. А насчет геометрии - я не говорил, что думать не нужно. Просто дело в том, что от количества думалки все равно кратчайший путь от точки до точки останется единственно неизменным в геометрии ))(о чем я писал в прежнем топике). |
Цитата:
|
Программист - это тот, кто программирует. Кодер - это тот, кто пишет код.
Для первого, в отличие от второго, написание кода - лишь один из этапов деятельности. |
| Часовой пояс GMT +3, время: 16:31. |