| 
	| 
	
	| 
		
	| 
			
			 
			
				10.10.2012, 21:41
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 02.03.2011 
						Сообщений: 38
					 
		
 |  |  
	| 
				Рандомные неповторяющиеся числа
			 Привет всем. Хоть убейте, ищу уже несколько дней.
 Может подскажите, нужен генератор рандомных неповторяющихся чисел (например, от 0 до 100).
 |  |  
	| 
		
	| 
			
			 
			
				10.10.2012, 22:43
			
			
			
		 |  
	| 
		
			|  | ✔       |  | 
					Регистрация: 04.06.2012 
						Сообщений: 513
					 
		
 |  |  
	| 
var randomNumber = function() {
alert(Math.floor(Math.random()*101)) ;
} ;
randomNumber() ;
randomNumber() ;
randomNumber() ;
Не?
				__________________★ ²º¹³ ☆
 |  |  
	| 
		
	| 
			
			 
			
				10.10.2012, 23:12
			
			
			
		 |  
	| 
		
			|  | Люмус, Емаксос Developer!       |  | 
					Регистрация: 06.05.2010 
						Сообщений: 677
					 
		
 |  |  
	| Если нужен генератор рандомных, не повторяющихся чисел из заданного диапазона, то вот он:  
function generateArrayRandomNumber (min, max) {
	var totalNumbers 		= max - min + 1,
		arrayTotalNumbers 	= [],
		arrayRandomNumbers 	= [],
		tempRandomNumber;
	while (totalNumbers--) {
		arrayTotalNumbers.push(totalNumbers + min);
	}
	while (arrayTotalNumbers.length) {
		tempRandomNumber = Math.round(Math.random() * (arrayTotalNumbers.length - 1));
		arrayRandomNumbers.push(arrayTotalNumbers[tempRandomNumber]);
		arrayTotalNumbers.splice(tempRandomNumber, 1);
	}
	return arrayRandomNumbers;
}
//	Нужно учесть что в диапазоне участвуют и минимальное и максимальное число
//	тоесть если задать (0, 100) то на выходе получим массив из 101-го числа
//	от 1 до 100 и плюс число 0
alert(generateArrayRandomNumber(45, 67));
P.S. Я этот генератор использовал для генерации плейлистов для онлайн проигрывателя.			 Последний раз редактировалось Magneto, 10.10.2012 в 23:14.
				Причина: хуй!
 |  |  
	| 
		
	| 
			
			 
			
				11.10.2012, 00:26
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 02.03.2011 
						Сообщений: 38
					 
		
 |  |  
	| 
	
 
	| Сообщение от Hekumok   |  
	| 
var randomNumber = function() {
alert(Math.floor(Math.random()*101)) ;
} ;
randomNumber() ;
randomNumber() ;
randomNumber() ;
Не?
 |  
	
 Нет, там числа могут повторяться. |  |  
	| 
		
	| 
			
			 
			
				11.10.2012, 00:26
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 02.03.2011 
						Сообщений: 38
					 
		
 |  |  
	| 
	
 
	| Сообщение от Magneto   |  
	| Если нужен генератор рандомных, не повторяющихся чисел из заданного диапазона, то вот он: 
 
function generateArrayRandomNumber (min, max) {
	var totalNumbers 		= max - min + 1,
		arrayTotalNumbers 	= [],
		arrayRandomNumbers 	= [],
		tempRandomNumber;
	while (totalNumbers--) {
		arrayTotalNumbers.push(totalNumbers + min);
	}
	while (arrayTotalNumbers.length) {
		tempRandomNumber = Math.round(Math.random() * (arrayTotalNumbers.length - 1));
		arrayRandomNumbers.push(arrayTotalNumbers[tempRandomNumber]);
		arrayTotalNumbers.splice(tempRandomNumber, 1);
	}
	return arrayRandomNumbers;
}
//	Нужно учесть что в диапазоне участвуют и минимальное и максимальное число
//	тоесть если задать (0, 100) то на выходе получим массив из 101-го числа
//	от 1 до 100 и плюс число 0
alert(generateArrayRandomNumber(45, 67));
 P.S. Я этот генератор использовал для генерации плейлистов для онлайн проигрывателя.
 |  
	
 спасибо, попробую |  |  
	| 
		
	| 
			
			 
			
				11.10.2012, 01:06
			
			
			
		 |  
	| 
		
			|  | Матрос       |  | 
					Регистрация: 04.04.2008 
						Сообщений: 6,246
					 
		
 |  |  
	| 
	
 
	| Сообщение от raler |  
	| Рандомные неповторяющиеся числа |  
	
 Вам шашечки или ехать? 
Рандомные и неповторяющиеся - два принципиально несовместимых требования. 
А если же вы хотите рандомную последовательность из 100 чисел, то это совсем другая задача |  |  
	| 
		
	| 
			
			 
			
				12.10.2012, 00:12
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 02.03.2011 
						Сообщений: 38
					 
		
 |  |  
	| 
	
 
	| Сообщение от Gvozd   |  
	| Вам шашечки или ехать? Рандомные и неповторяющиеся - два принципиально несовместимых требования.
 А если же вы хотите рандомную последовательность из 100 чисел, то это совсем другая задача
 |  
	
 ну незнаю, видимо неправильно выразился. да, мне нужна последовательность из из 100 неповторяющихся чисел в диапазоне от 0 до 100 |  |  
	| 
		
	| 
			
			 
			
				12.10.2012, 00:12
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 02.03.2011 
						Сообщений: 38
					 
		
 |  |  
	| 
	
 
	| Сообщение от Magneto   |  
	| Если нужен генератор рандомных, не повторяющихся чисел из заданного диапазона, то вот он: 
 
function generateArrayRandomNumber (min, max) {
	var totalNumbers 		= max - min + 1,
		arrayTotalNumbers 	= [],
		arrayRandomNumbers 	= [],
		tempRandomNumber;
	while (totalNumbers--) {
		arrayTotalNumbers.push(totalNumbers + min);
	}
	while (arrayTotalNumbers.length) {
		tempRandomNumber = Math.round(Math.random() * (arrayTotalNumbers.length - 1));
		arrayRandomNumbers.push(arrayTotalNumbers[tempRandomNumber]);
		arrayTotalNumbers.splice(tempRandomNumber, 1);
	}
	return arrayRandomNumbers;
}
//	Нужно учесть что в диапазоне участвуют и минимальное и максимальное число
//	тоесть если задать (0, 100) то на выходе получим массив из 101-го числа
//	от 1 до 100 и плюс число 0
alert(generateArrayRandomNumber(45, 67));
 P.S. Я этот генератор использовал для генерации плейлистов для онлайн проигрывателя.
 |  
	
 спасибо еще раз, все работает) |  |  
	| 
		
	| 
			
			 
			
				13.10.2012, 12:13
			
			
			
		 |  
	| 
		
			
			| sinistral     |  | 
					Регистрация: 28.03.2011 
						Сообщений: 5,418
					 
		
 |  |  
	| 
	
 
	| Сообщение от Magneto |  
	| arrayTotalNumbers.splice(tempRandomNumber, 1); |  
	
 иу ...
 
по-моему, тут 
 
	
 
	| Сообщение от Magneto |  
	| arrayTotalNumbers   = [], |  
	
 было бы целесообразно использовать типизированные массивы (те, что недавно появились), которые оптимизированы для работы с числами.
 
или же использовать объект, чтобы не splice'ить огромный массив. |  |  
	| 
		
	| 
			
			 
			
				03.08.2014, 15:23
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 03.08.2014 
						Сообщений: 1
					 
		
 |  |  
	| 
function inArray(arr, num){
				for (var i = 0; i < arr.length; i++) {
					if (num == arr[i]) return true;
				};
				return false;
			}
		function createRand(randLength, min, max){
			var randArray = [],
				i = 0;
			if (randLength>(max-min+1)) {
				return null;
			}
			while (i < randLength) {
				var rand = Math.floor(Math.random() * (max - min + 1)) + min;
				if (!(inArray(randArray,rand))){
					i++;
					randArray.unshift(rand);
				}
			};
			return randArray;
		}
использовать createRand(длина массива, минимальное, максимальное); |  |  |  |