Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.09.2017, 17:50
Новичок на форуме
Отправить личное сообщение для Samik Посмотреть профиль Найти все сообщения от Samik
 
Регистрация: 28.09.2017
Сообщений: 6

Генератор случайных чисел без повторений в последующих генерациях
Всем привет! Прошу помочь с одной задачей. Нужно сделать генератор случайных чисел из диапазона чисел, но так чтобы в последующих генерациях числа не повторялись, и чтобы можно было менять кол-во генерации значений. Генерация до тех пока числа не кончатся, потом заново генерация. Возможно ли как то реализовать это?
  1. Ввели диапазон чисел
  2. Выбрали количество значений
  3. Нажали генерировать
  4. Числа сгенерировались и записалось в бд (12 5 7 23 8 9)
  5. Нажали генерировать
  6. Проверяются числа из уже сделанных предыдущих генераций (предыдущая генерация: 12 5 7 23 8 9)
  7. Генерируются числа которые еще не отображались (25 6 3 4 36 2)
  8. Вывод на экран (25 6 3 4 36 2)
  9. Кнопочка очистить значения чтобы начать заново


Пример:
Диапазон чисел: 0-48
Количество значений за 1 генерацию: 6
Нажимаем кнопку, генерируются числа
Результат:
Генерация 1: 12 5 7 23 8 9
Генерация 2: 25 6 3 4 36 2
Генерация 3: 17 21 27 42 15 39

Не просто генерация чисел, не так чтобы выдала:
Генерация 1: 12 5 7 23 8 9
Генерация 2: 11 7 15 33 43 10
Генерация 3: 8 22 34 47 0 13

Выделены цифры которые повторяются при последующей генерации
Ответить с цитированием
  #2 (permalink)  
Старый 28.09.2017, 18:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,620

Samik,
создали массив, перемешали, пока длина массива больше n, то return arr.splice(0,n) иначе ... ???
Ответить с цитированием
  #3 (permalink)  
Старый 28.09.2017, 18:20
Новичок на форуме
Отправить личное сообщение для Samik Посмотреть профиль Найти все сообщения от Samik
 
Регистрация: 28.09.2017
Сообщений: 6

Сообщение от рони Посмотреть сообщение
Samik,
создали массив, перемешали, пока длина массива больше n, то return arr.splice(0,n) иначе ... ???
такс пока не въехал
Ответить с цитированием
  #4 (permalink)  
Старый 28.09.2017, 18:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,620

Сообщение от Samik
Диапазон чисел: 0-48
Количество значений за 1 генерацию: 6
что будет на 9-ой генерации?
Ответить с цитированием
  #5 (permalink)  
Старый 28.09.2017, 18:47
Новичок на форуме
Отправить личное сообщение для Samik Посмотреть профиль Найти все сообщения от Samik
 
Регистрация: 28.09.2017
Сообщений: 6

Сообщение от рони Посмотреть сообщение
что будет на 9-ой генерации?
должно быть сокращение генерируемых чисел, после того как числа из диапазона 0-48 будут кончаться, то количество значений будет уменьшаться от 6 и до 0
Ответить с цитированием
  #6 (permalink)  
Старый 28.09.2017, 18:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,620

Samik,
не понимаю, что вы пишите. вопрос вроде простой: что будет на 9-ой генерации?

Ответить с цитированием
  #7 (permalink)  
Старый 28.09.2017, 19:36
Новичок на форуме
Отправить личное сообщение для Samik Посмотреть профиль Найти все сообщения от Samik
 
Регистрация: 28.09.2017
Сообщений: 6

Сообщение от рони Посмотреть сообщение
Samik,
не понимаю, что вы пишите. вопрос вроде простой: что будет на 9-ой генерации?

Ну смотри:
диапазон: 0-10
Количество значений за 1 генерацию: 3

Генерация 1: 1 3 5
Генерация 2: 2 4 6
Генерация 3: 7 9 8
Генерация 4: 0 10
Генерация 5: уже ничего не будет генерировать

Если к 9ой генерации чисел из диапазона уже не останется то результата не будет, и нужно делать сброс чтобы начать с начала
Ответить с цитированием
  #8 (permalink)  
Старый 28.09.2017, 20:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,620

Samik,
<script>
function gn(b, d, c) {
    for (var a = []; b <= d; b++) a = a.concat(a.splice(Math.random() * a.length | 0, 1, b));
    return function() {
        return a.length >= c ? a.splice(a.length - c) : a.splice(0)
    }
};
var x = gn(0,10,3)
for (var i=0; i<5; i++)  {document.write(x()+"<br>")}

  </script>

Последний раз редактировалось рони, 28.09.2017 в 20:53.
Ответить с цитированием
  #9 (permalink)  
Старый 28.09.2017, 21:00
Новичок на форуме
Отправить личное сообщение для Samik Посмотреть профиль Найти все сообщения от Samik
 
Регистрация: 28.09.2017
Сообщений: 6

Сообщение от рони Посмотреть сообщение
Samik,
<script>
function gn(b, d, c) {
    for (var a = []; b <= d; b++) a = a.concat(a.splice(Math.random() * a.length | 0, 1, b));
    return function() {
        return a.length >= c ? a.splice(a.length - c) : a.splice(0)
    }
};
var x = gn(0,10,3)
for (var i=0; i<5; i++)  {document.write(x()+"<br>")}

  </script>
тестирую, а можно это обернуть так?
Ответить с цитированием
  #10 (permalink)  
Старый 28.09.2017, 21:16
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,642

<!DOCTYPE html>
<html lang="en">
<head>
	<style>
		input{
			width: 30px;
		}
	</style>
</head>
<body>
	От <input type="text" value="0" id="ot"> до <input type="text" value="10" id="do"> по <input type="text" value="3" id="num"> чисел<br>
	<button id="gen">Генерировать</button><button id="sb">Сброс</button>
	<div id="res"></div>

	<script>
		function gn(b, d, c) {
			for (var a = []; b <= d; b++) a = a.concat(a.splice(Math.random() * a.length | 0, 1, b));
				return function() {
					return a.length >= c ? a.splice(a.length - c) : a.splice(0);
				};
			}
			function sm(){
				var x = gn(document.querySelector('#ot').value,document.querySelector('#do').value,document.querySelector('#num').value);
				document.querySelector('#gen').onclick = function(){
					document.querySelector('#res').innerHTML += x()+"<br>";
				};
				document.querySelector('#res').innerHTML='';
			};
			sm();
			document.querySelector('#sb').onclick=sm;
		</script>
	</body>
	</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма чисел фиббоначи без использования функций и массивов. mariaanina Общие вопросы Javascript 4 03.06.2014 16:22
Случайное значение без повторений в диапазоне от min до max ponyspy Общие вопросы Javascript 16 26.03.2014 18:17
Генератор не повторяющихся случайных чисел, кроме... qwertyuiopoiuytrewq Элементы интерфейса 5 24.01.2013 09:39
Сгенерировать последовательность с помощью датчика случайных чисел Natasha Общие вопросы Javascript 0 30.03.2012 19:11
Генератор случайных чисел с возможностью ввода диапазона. Как сделать? Sovereign Общие вопросы Javascript 3 10.06.2011 07:34