Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Генерация случайного числа с помощью JS

Ден Але Ученик (53), на голосовании 2 года назад
Всем привет!
Есть форма input и рядом с ней иконка в блоке div
Подскажите пожалуйста, как сделать так что бы при клике на данный div блок в форме input генерировалось случайное число от 100000000 до 999999999 при помощи JS (без перезагрузки страницы)
За ранее спасибо!
Голосование за лучший ответ
Павел Просветленный (26032) 2 года назад
Math.random() возвращает число от 0 до 1 (не включая). Твоя задача увеличить/округлить это число так, чтобы получился нужный тебе интервал. Например, умножив это значение на 10 и округлив до целых чисел, получишь интервал 0-9. Добавив 1 получишь 1-10. Округлив до ближайшего, 0-10 и т.д.

Чтобы добавить действие на клик, используй addEventListener.

Чтобы найти элемент - document. querySelector().
Чтобы считать/задать значение для input, используй свойство value.
Яков Гото Искусственный Интеллект (352858) 2 года назад
Очень просто...
  
 const field_values = document.querySelector('.field-number'); 
const generate_btn = document.querySelector('.generate-number');

const generate_num = (n1, n2) => {
const random = Math.random() * (n2 - n1 + 1) + n1;
return Math.floor(random);
};

generate_btn.addEventListener('click', () => {
field_values.value = generate_num(100000000,999999999);
});
Про рандомайзер можешь почитать в документации, как и про событие click, и про особые свойства полей формы.
Ден АлеУченик (53) 2 года назад
Спасибо!
Саня Семенов Оракул (60597) 2 года назад
все случайные числа это звенья цепочки длинной последовательности и их только примерно можно считать случайными особенно это важно когда нужно создать какие то безопасные вещи например ключи пароли сертификаты поэтому там они использую случайный рандомайзер на основе каких то других физических процессов а в обычном JS обычно достаточно просто округлить псевдослучайное число и привести его к в нужный диапазон обычными математическими операциями например вроде как-нибудь так
 function getRandomInt(min, max) { 
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min); // The maximum is exclusive and the minimum is inclusive
}
соответственно из-за округления число может получится слегка великовато
Похожие вопросы