| 
	| 
	
	| 
		
	| 
			
			 
			
				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,601
					 
		
 |  |  
	| Программист - это тот, кто программирует. Кодер - это тот, кто пишет код.Для первого, в отличие от второго, написание кода - лишь один из этапов деятельности.
 
				__________________ 29375, 35
			 Последний раз редактировалось Aetae, 28.11.2011 в 22:37.
 |  |  |  |