Случайные числа в JavaScript

Javascript

В процессе работы над задачей нередко возникает ситуация, когда нужно получить случайное число. Сегодня мы рассмотрим «коробочные» методы в JavaScript, которые позволяют это сделать, поговорим о случайных и псевдослучайных числах. Поехали!

Псевдослучайные числа

Метод random() объекта Math позволяет получить число в диапазоне от 0 до 1, причем правая граница не включительна:

const randomNumber =Math.random()// переменная содержит число от 0 до 1, включая дробные

Метод не принимает никаких аргументов. Его поведение довольно прозрачно, однако на деле он выдает псевдослучайные числа.

Посудите сами: метод – это функция, а функция – строгий набор инструкций, алгоритм. Код функции написан и не меняется, значит, программа априори не может выдать действительно случайного числа. Движок изначально выбирает, по какому принципу генерировать «случайные» числа, поэтому на самом деле число не совсем случайное.

Расширяем диапазон случайных чисел

Доступный нам метод random() возвращает очень узкий диапазон. Что если нам нужно его расширить?Вспомним математику:

functionrandomInRange(min,max){// принимаем нижнюю и верхнюю границы
return((max-min)+min)*Math.random();
}

Случайное целое

Метод random() за исключением нуля возвращает дробное число. Встроенный объект Math имеет метод round, который в качестве аргумента дробное число и округляет его в большую или меньшую сторону, в зависимости от величины дробной части.

Сразу обобщим наш пример. Чтобы получить диапазон случайных целых чисел от minдоmax, достаточно обернуть возвращаемое значение функции randomInRange как аргумент в Math.round():

function randomInRange(min,max){// принимаем нижнюю и верхнюю границы
returnMath.round(((max-min)+min)*Math.random());
}

Другие методы объекта Math

Ранее мы рассмотрели всего два метода Math: randomи round. Существуют еще три метода, который могут быть полезны при округлении:

  1. Math.floor() – округляем в меньшую сторону
  2. Math.ceil() – округляем в большую сторону
  3. Math.trunc() – обрезаем дробную часть числа

Также объект Math содержит много свойств и методов для работы с математикой.

Получение случайного элемента в массиве

Используя приемы, изложенные выше, и зная длину массива, нам не составит труда получить его случайный элемент. На примере создадим массив натуральных чисел от 1 до 10:

const numbersArray =[1,2,3,4,5,6,7,8,9,10];

Обратите внимание, что массив объявлен с помощью ключевого слова const, стандартом де-факто, введенный еще в ES-2015. Далее немного изменим нашу функцию randomInRange следующим образом:

function randomInRange(max,min=0){// принимаем нижнюю и верхнюю границы
returnMath.round(((max-min)+min)*Math.random());
}

Мы поменяли местами параметры maxи minи сделали minпо умолчанию равным 0. Сейчас станет понятно, зачем:

let randomNumber = numbersArray[randomInRange(numbersArray.length-1)]

Теперь, если мы хотим получить случайное число во всем массиве, нам достаточно передать индекс его последнего элемента. Так как нумерация элементов в массиве начинается с 0, индекс последнего элемента высчитывается как numbersArray – 1.

В качестве индекса массива передаем возвращаемое значение randomInRange, которое вернет, в нашем случае, число в диапазоне от 0 до 9.

Если нам понадобится начинать поиск не с начала массива, мы передадим в randomInRange аргумент minявно. Аналогично можно «обрезать» и max и искать случайные числа в произвольном диапазоне самого массива:

letnumberInRange= numbersArray[randomInRange(5,2)]

Так мы вернем индексы в диапазоне от 2 до 5, сузив рамки поиска. На этом все. Приятного вам JavaScript’инга!

Оцените статью
Образовательный портал WELCOME4U.RU
Добавить комментарий

Adblock
detector