19.10.2011, 18:23
|
Интересующийся
|
|
Регистрация: 11.10.2011
Сообщений: 26
|
|
Массив случайных чисел
Нужно из большого массива выбрать определенное количество случайных значений и записать в новый массив и вернуть его, только в новом не должны быть повторения.
написал вот такое
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);
что то не всегда получается, как будто недопроверяет последний элемент массива, потому что повторения попадают в конец. Не могу домучать, может подскажете?
Последний раз редактировалось e-do, 19.10.2011 в 18:45.
|
|
19.10.2011, 19:48
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
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;
}
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
19.10.2011, 20:47
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
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));
Последний раз редактировалось monolithed, 19.10.2011 в 22:14.
|
|
19.10.2011, 21:15
|
Интересующийся
|
|
Регистрация: 11.10.2011
Сообщений: 26
|
|
спасибо, долго бы я мучался)) недавно программирование учу, прямолинейно рассуждаю
|
|
19.10.2011, 21:58
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от e-do
|
прямолинейно рассуждаю
|
удивил интересно что б былобы если бы кодеры не прямолинейно рассуждали?
|
|
23.11.2011, 03:34
|
Интересующийся
|
|
Регистрация: 11.10.2011
Сообщений: 26
|
|
Сообщение от dmitriymar
|
удивил интересно что б былобы если бы кодеры не прямолинейно рассуждали?
|
может у кодеру надо, хотя не вполне уверен, но программисту логика нужна, и не всегда кратчайший путь в логике лежит прямо из одной точки в другую, как в геометрии например.
|
|
23.11.2011, 07:31
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от e-do
|
может у кодеру надо, хотя не вполне уверен, но программисту логика нужна
|
Кодер == программист)
Сообщение от e-do
|
и не всегда кратчайший путь в логике лежит прямо из одной точки в другую, как в геометрии например.
|
А в геометрии прям ни разу думать не нужно) Ни тебе теорем, ни поиска решения...
|
|
28.11.2011, 03:59
|
Интересующийся
|
|
Регистрация: 11.10.2011
Сообщений: 26
|
|
Сообщение от trikadin
|
Кодер == программист)
А в геометрии прям ни разу думать не нужно) Ни тебе теорем, ни поиска решения...
|
я бы сказал, что кодер !== программист это более правдоподобно. Логика программиста не всегда доступна кодеру.
А насчет геометрии - я не говорил, что думать не нужно. Просто дело в том, что от количества думалки все равно кратчайший путь от точки до точки останется единственно неизменным в геометрии ))(о чем я писал в прежнем топике).
Последний раз редактировалось e-do, 28.11.2011 в 04:05.
|
|
28.11.2011, 22:16
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от e-do
|
я бы сказал, что кодер !== программист это более правдоподобно. Логика программиста не всегда доступна кодеру.
|
Программист - это тот, кто пишет код. Кодер - это тот, кто пишет код. Разницы нет) Ты таки что-тот путаешь.
|
|
28.11.2011, 22:35
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,587
|
|
Программист - это тот, кто программирует. Кодер - это тот, кто пишет код.
Для первого, в отличие от второго, написание кода - лишь один из этапов деятельности.
__________________
29375, 35
Последний раз редактировалось Aetae, 28.11.2011 в 22:37.
|
|
|
|