Рубрики
Без рубрики

Работа со случайными числами в JavaScript

Непредсказуемое поведение делает наши приложения более интересными, когда все сделано правильно. Например, представьте себе карту … Tagged with JavaScript, начинающие, алгоритмы.

Непредсказуемое поведение делает наши приложения более интересными, когда все сделано правильно. Например, представьте себе карточные игры, где вы можете держать один и тот же набор карт, чтобы играть в каждый раунд, а не перетасовать их в конце каждой игры, чтобы получить новые карты! Нам определенно нужна какая -то рандомизация, чтобы сделать нашу жизнь веселее:)

Math.random ()

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

Math.random() // 0.34484257625111736

Math.random () возвращает плавающее число (число с десятичным значением) между 0 (включительно) до 1 (эксклюзив). Зная это поведение, мы можем настроить его так, чтобы оно масштабировалось до того, что мы хотим! Давайте предположим, что мы хотим случайное целое число (число без десятичного значения) от 1 до 10. Вот как мы это сделаем.

Math.floor(Math.random() * 10) + 1 // 4

Мы умножаем вывод Math.random () на 10, который всегда будет возвращать плавающее число между 0 и 9,9999999 … потому что 0 раз 10 по -прежнему 0 и 0,9999999 … времена 10 – 9,9999999 … (Math.random () никогда не достигает 1).

Во -вторых, мы используем Math.floor (), чтобы округлить его до ближайшего целого числа. Вывод теперь возвращает целое число между 0 и 9.

Затем мы добавим 1, чтобы компенсировать наш выход! Наша формула теперь генерирует число от 1 до 10.

Лучшее решение?

На самом деле мы могли бы немного сократить наш код, используя math.ceil () вместо math.floor ().

Math.ceil(Math.random() * 10) // 8

Math.ceil () принимает число и раунды вверх к ближайшему целому числу, которое действует напротив Math.floor (). Это означает, что в конце концов нет необходимости +1.

Выберите то, что вам нравится, хотя я чаще видел первый метод.

Способность повторного использования для победы!

Если вы читали мои статьи. Вы знаете, насколько я сосредоточен на том, чтобы сделать коды повторно используемыми. Используя приведенную выше методику, которую мы изучили, давайте сделаем универсальную функцию, которая занимает минимальное число и максимальное число, чтобы выпустить число между диапазоном 2 аргументов. На самом деле, прежде чем я кодирую это для вас. Почему бы тебе не попробовать в качестве упражнения?

Шаги

Ты понял? Не волнуйтесь, если нет. На самом деле довольно сложно обнять его голову в первый раз.

Мы знаем Math.random () дают плавающее число от 0 до 0,9999999 … Мы также знаем, что Math.floor () завершает число до ближайшего целого числа. Следовательно, Math.floor (math.random ()) всегда приводит к 0. Ну, что мы делаем, чтобы получить более одного целого числа в результате? Возможное число внутри math.floor () должно быть больше 1!

Напомним, что умножение на 10 на Math.random () дает нам 10 возможностей. Что если мы умножаем на 5 или 2?

Math.floor(Math.random() * 10) // 0 - 9 (10 possibilities)
Math.floor(Math.random() * 5) // 0 - 4 (5 possibilities)
Math.floor(Math.random() * 2) // 0 - 1 (2 possibilities)

Хорошо, давайте дадим сценарий и скажем, что мы хотим случайное целое число в диапазоне 10 и 20. Давайте пройдем в 10 как наш мин и 20 как наш макс. Это означает, что нам нужно умножить математику. Вот что у нас есть до сих пор.

function getRandomNumber(min, max) {
  return Math.floor(Math.random() * (max - min))
}

Это на самом деле превращается в то, что у нас было в начале для нашего сценария.

Math.floor(Math.random() * (20 - 10)) // 0 - 9 (10 possibilities)

Тем не менее, мы хотим, чтобы несколько вещей были разными. Обратите внимание, что мы сейчас ищем 11 Возможности Вместо 10 возможностей, потому что мы хотим включить 10 и 20 (10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20). Итак, давайте добавим 1 в нашу формулу.

function getRandomNumber(min, max) {
  return Math.floor(Math.random() * (max - min + 1))
}

Который в нашем сценарии

Math.floor(Math.random() * (20 - 10 + 1)) // 0 - 10 (11 possibilities)

Наконец, мы также заботимся о нашем диапазоне, а также количество возможностей. Что нам нужно, чтобы увеличить с 0 до 10 до 10 – 20? Добавление мин в конце. Вот решение.

Решение

function getRandomNumber(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

Наш сценарий дает

Math.floor(Math.random() * (20 - 10 + 1)) + 10 // 10 - 20 (11 possibilities)

Резюме

Math.random () довольно полезен и мощный, который можно использовать для многих различных целей. От случайного выбора значения из заданного массива до генерации другого числа при прокатке на кости – все это сделано через Math.random (). Я надеюсь, что вы сможете поиграть с этим в ближайших проектах, если у вас еще не будет возможности использовать его. Спасибо за чтение!

Оригинал: “https://dev.to/shimphillip/working-with-random-numbers-in-javascript-1c0k”