Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.10.2012, 21:41
Аватар для raler
Аспирант
Отправить личное сообщение для raler Посмотреть профиль Найти все сообщения от raler
 
Регистрация: 02.03.2011
Сообщений: 38

Рандомные неповторяющиеся числа
Привет всем. Хоть убейте, ищу уже несколько дней.

Может подскажите, нужен генератор рандомных неповторяющихся чисел (например, от 0 до 100).
Ответить с цитированием
  #2 (permalink)  
Старый 10.10.2012, 22:43
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

var randomNumber = function() {
alert(Math.floor(Math.random()*101)) ;
} ;
randomNumber() ;
randomNumber() ;
randomNumber() ;

Не?
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #3 (permalink)  
Старый 10.10.2012, 23:12
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 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. Причина: хуй!
Ответить с цитированием
  #4 (permalink)  
Старый 11.10.2012, 00:26
Аватар для raler
Аспирант
Отправить личное сообщение для raler Посмотреть профиль Найти все сообщения от raler
 
Регистрация: 02.03.2011
Сообщений: 38

Сообщение от Hekumok Посмотреть сообщение
var randomNumber = function() {
alert(Math.floor(Math.random()*101)) ;
} ;
randomNumber() ;
randomNumber() ;
randomNumber() ;

Не?
Нет, там числа могут повторяться.
Ответить с цитированием
  #5 (permalink)  
Старый 11.10.2012, 00:26
Аватар для raler
Аспирант
Отправить личное сообщение для raler Посмотреть профиль Найти все сообщения от raler
 
Регистрация: 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. Я этот генератор использовал для генерации плейлистов для онлайн проигрывателя.
спасибо, попробую
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2012, 01:06
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от raler
Рандомные неповторяющиеся числа
Вам шашечки или ехать?
Рандомные и неповторяющиеся - два принципиально несовместимых требования.
А если же вы хотите рандомную последовательность из 100 чисел, то это совсем другая задача
Ответить с цитированием
  #7 (permalink)  
Старый 12.10.2012, 00:12
Аватар для raler
Аспирант
Отправить личное сообщение для raler Посмотреть профиль Найти все сообщения от raler
 
Регистрация: 02.03.2011
Сообщений: 38

Сообщение от Gvozd Посмотреть сообщение
Вам шашечки или ехать?
Рандомные и неповторяющиеся - два принципиально несовместимых требования.
А если же вы хотите рандомную последовательность из 100 чисел, то это совсем другая задача
ну незнаю, видимо неправильно выразился. да, мне нужна последовательность из из 100 неповторяющихся чисел в диапазоне от 0 до 100
Ответить с цитированием
  #8 (permalink)  
Старый 12.10.2012, 00:12
Аватар для raler
Аспирант
Отправить личное сообщение для raler Посмотреть профиль Найти все сообщения от raler
 
Регистрация: 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. Я этот генератор использовал для генерации плейлистов для онлайн проигрывателя.
спасибо еще раз, все работает)
Ответить с цитированием
  #9 (permalink)  
Старый 13.10.2012, 12:13
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Magneto
arrayTotalNumbers.splice(tempRandomNumber, 1);
иу ...

по-моему, тут
Сообщение от Magneto
arrayTotalNumbers = [],
было бы целесообразно использовать типизированные массивы (те, что недавно появились), которые оптимизированы для работы с числами.

или же использовать объект, чтобы не splice'ить огромный массив.
Ответить с цитированием
  #10 (permalink)  
Старый 03.08.2014, 15:23
Новичок на форуме
Отправить личное сообщение для Chisarat Посмотреть профиль Найти все сообщения от Chisarat
 
Регистрация: 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(длина массива, минимальное, максимальное);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет числа последовательностей Slavenin Оффтопик 10 20.03.2012 13:58
Помогите получить числа rommeq Общие вопросы Javascript 6 15.04.2011 00:50
Из отрицательного числа - положительное? PAMAC Общие вопросы Javascript 11 18.01.2011 20:45
Числа в поле для вычисления sergey-16a1 Javascript под браузер 5 19.08.2010 17:29
число 76.4705882.. сделать 76.47? (числа всегда разные) TongaG Ваши сайты и скрипты 3 19.01.2010 07:35