@fanhypermax

Неповторяемое rand число?

Как сделать неповторяемое rand число с мин значением и макс
  • Вопрос задан
  • 229 просмотров
Пригласить эксперта
Ответы на вопрос 3
devspec
@devspec
Помогло? Отметь решением
Совсем-совсем неповторяемое? Тогда записывайте его в массив и после каждой генерации проверяйте наличие в массиве. Или в БД под индексом.
Как вообще сделать случайное число - javascript.ru/math.random
Можно также посмотреть в сторону guid
Ответ написан
Stalker_RED
@Stalker_RED
// Возвращает случайное целое число между min (включительно) и max (не включая max)
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}

Если "неповторяемое" - это обязательное требование, то придется запоминать все предыдущие вызовы числа. ну и вы должны учитывать, что однажды все числа из диапазона будут использованы.
Ответ написан
devellopah
@devellopah
class UnrepeatedRandomInteger {
	
	constructor(min, max) {
		this.min = min;
		this.max = max;
		this.range = [];
		this.defaultRange = [];
		
		const makeRange = () => {
			const range = [];
			
			for(let i = this.min; i <= this.max; i++) {
				range.push(i);
			}
			
			this.range = range;
			this.defaultRange = range;
		};
		
		makeRange();
	}

	random() {
		const index =  Math.floor( Math.random() * this.range.length );
		const victim = this.range[index];
		const newRange = this.range.filter(item => item !== victim);
		
		this.range = newRange;
		
		return victim;
	}
	
	restore() {
		this.range = this.defaultRange;
	}
	
	emptify() {
		this.defaultRange.forEach(item => {
			console.log('i am dying slowly...', this.range);
			console.log('i am gonna be dropped now and never after! ', this.random());
			console.log('\n\n');
		});
	}

}

full version - https://repl.it/IG24/1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект