Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2011, 18:23
Интересующийся
Отправить личное сообщение для e-do Посмотреть профиль Найти все сообщения от e-do
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2011, 19:48
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 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 клацай
Ответить с цитированием
  #3 (permalink)  
Старый 19.10.2011, 20:47
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 19.10.2011, 21:15
Интересующийся
Отправить личное сообщение для e-do Посмотреть профиль Найти все сообщения от e-do
 
Регистрация: 11.10.2011
Сообщений: 26

спасибо, долго бы я мучался)) недавно программирование учу, прямолинейно рассуждаю
Ответить с цитированием
  #5 (permalink)  
Старый 19.10.2011, 21:58
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от e-do
прямолинейно рассуждаю
удивил интересно что б былобы если бы кодеры не прямолинейно рассуждали?
Ответить с цитированием
  #6 (permalink)  
Старый 23.11.2011, 03:34
Интересующийся
Отправить личное сообщение для e-do Посмотреть профиль Найти все сообщения от e-do
 
Регистрация: 11.10.2011
Сообщений: 26

Сообщение от dmitriymar Посмотреть сообщение
удивил интересно что б былобы если бы кодеры не прямолинейно рассуждали?
может у кодеру надо, хотя не вполне уверен, но программисту логика нужна, и не всегда кратчайший путь в логике лежит прямо из одной точки в другую, как в геометрии например.
Ответить с цитированием
  #7 (permalink)  
Старый 23.11.2011, 07:31
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от e-do
может у кодеру надо, хотя не вполне уверен, но программисту логика нужна
Кодер == программист)

Сообщение от e-do
и не всегда кратчайший путь в логике лежит прямо из одной точки в другую, как в геометрии например.
А в геометрии прям ни разу думать не нужно) Ни тебе теорем, ни поиска решения...
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 28.11.2011, 03:59
Интересующийся
Отправить личное сообщение для e-do Посмотреть профиль Найти все сообщения от e-do
 
Регистрация: 11.10.2011
Сообщений: 26

Сообщение от trikadin Посмотреть сообщение
Кодер == программист)

А в геометрии прям ни разу думать не нужно) Ни тебе теорем, ни поиска решения...

я бы сказал, что кодер !== программист это более правдоподобно. Логика программиста не всегда доступна кодеру.
А насчет геометрии - я не говорил, что думать не нужно. Просто дело в том, что от количества думалки все равно кратчайший путь от точки до точки останется единственно неизменным в геометрии ))(о чем я писал в прежнем топике).

Последний раз редактировалось e-do, 28.11.2011 в 04:05.
Ответить с цитированием
  #9 (permalink)  
Старый 28.11.2011, 22:16
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от e-do
я бы сказал, что кодер !== программист это более правдоподобно. Логика программиста не всегда доступна кодеру.
Программист - это тот, кто пишет код. Кодер - это тот, кто пишет код. Разницы нет) Ты таки что-тот путаешь.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #10 (permalink)  
Старый 28.11.2011, 22:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Программист - это тот, кто программирует. Кодер - это тот, кто пишет код.
Для первого, в отличие от второго, написание кода - лишь один из этапов деятельности.
__________________
29375, 35

Последний раз редактировалось Aetae, 28.11.2011 в 22:37.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор случайных чисел с возможностью ввода диапазона. Как сделать? Sovereign Общие вопросы Javascript 3 10.06.2011 08:34
Генератор случайных чисел. Помогите написать. Teenager Я не знаю javascript 5 05.01.2011 19:15
Сложение случайных чисел user1111 Общие вопросы Javascript 14 08.11.2010 22:06
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30