sakrab
@sakrab
Не будь побежден злом, но побеждай зло добром...

Рандом числа. Нужны не одинаковые цифры. Как сделать?

Код ниже, выводит строку из 4 цифр.

var max = 10000;
var min = 1000;
var numberComputer = String(Math.round(Math.random() * (max - min) + min));
for(){ }


Как сделать циклом чтоб в строке не было одинаковых чисел? Например с помощью indexOf

Или придется все таки использовать массив...?
  • Вопрос задан
  • 1205 просмотров
Решения вопроса 1
Ivanq
@Ivanq
Знаю php, js, html, css
function random(digits) {
	if(digits > 10) return false;
	var dg = "";
  var k = Math.floor(Math.random()*9)+1; // 0 вначале не модет идти
  dg += k;
  for(var i=0;i-1) {
  		var k = Math.floor(Math.random()*10);
    }
    dg += k;
  }
  return parseInt(dg);
}


В общем, так: даешь функции в параметре количество цифр, она тебе возвращает число. Краткий алгоритм:
  • Поставить в переменную цифру от 1 до 9 (0 не может быть первым)
  • ПАРАМЕТР-1 раз повторить:
    • Сгенерировать случайную цифру от 0 до 9
    • Если цифра уже есть, вернуться к предыдущему шагу
    • Дозаписать цифру в переменную

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
используйте массив
Ответ написан
Комментировать
DIITHiTech
@DIITHiTech
Fullstack javascript developer
function uniqueDigits(count){
var number="",
index=0,
digit,
minDigit=1;

while (index < count && index < 10) {
do{
digit=Math.floor(Math.random() * (10- minDigit)) + minDigit;
}while(~number.indexOf(digit));
minDigit=0;
number+=digit;
index++;
}

return number*1;

}

alert(uniqueDigits(9));

https://jsfiddle.net/jhkuz6a7/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы