Массив случайных чисел
Нужно из большого массива выбрать определенное количество случайных значений и записать в новый массив и вернуть его, только в новом не должны быть повторения.
написал вот такое 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, время: 02:16. |