Как сделать рандомное число в js

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Число, сгенерированное процессом, результат которого непредсказуем, называется случайным числом. В JavaScript это может быть достигнуто с помощью функции Math.random (). В этой статье описывается, как генерировать случайное число с помощью JavaScript.

Метод 1: Использование функции Math.random (): Функция Math.random () используется для возврата псевдослучайного числа с плавающей запятой между диапазонами [0,1), 0 (включительно) и 1 (исключительно). Это случайное число затем может быть масштабировано в соответствии с желаемым диапазоном.

Синтаксис:

Пример 1: В этом примере генерируется целое случайное число от 1 (мин) до 5 (макс).

Выход:

Метод 2: Использование функции Math.floor (): Функция Math.floor () в JavaScript используется для округления числа, переданного в качестве параметра, до ближайшего целого числа в направлении округления вниз, т.е. в сторону меньшего значения.

Синтаксис:

Пример 2: В этом примере генерируется случайное целое число от 1 (мин) до 100 (макс).

Выход:

Пример 3: В этом примере генерируется случайное целое число от 1 (мин) до 10 (макс.) Включительно.

Массивы удобно использовать для выбора случайного значения из предопределённых данных.

Сами случайные числа можно генерировать при помощи метода Math.random(), который возвращает случайное число от 0 до 1, но единица не входит в этот диапазон.

Если вам нужен другой диапазон, то умножьте полученное число на подходящий коэффициент. Чтобы получить числа от 0 до 10, делаем так.

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

Применяем оба метода.

Теперь мы будем получить целые числа от 0 до 9 включительно. Такой вариант уже подойдёт для получения случайного индекса массива.

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

Шар судьбы

Мы можем подготовить массив фраз и случайным образом выдавать их пользователю.

Как я могу генерировать случайные целые числа между двумя указанными переменными в JavaScript, например, x = 4 и y = 8 будет выводить любое из 4, 5, 6, 7, 8 ?

ОТВЕТЫ

Ответ 1

На странице Mozilla Developer Network есть несколько примеров:

Здесь логика за этим. Это простое правило трех:

Math.random() возвращает Number от 0 (включительно) до 1 (исключение). Итак, у нас есть такой интервал:

Теперь мы бы хотели, чтобы число от min (включительно) до max (эксклюзив):

Мы можем использовать Math.random чтобы получить корреспондента в интервале [min, max). Но сначала мы должны немного учесть проблему, вычитая min из второго интервала:

Теперь мы можем применить Math.random а затем вычислить корреспондента. Позвольте выбрать случайное число:

Итак, чтобы найти x , мы бы сделали:

Не забудьте добавить min обратно, чтобы мы получили число в интервале [min, max):

Это была первая функция от MDN. Второй возвращает целое число от min до max , оба включительно.

Теперь для получения целых чисел вы можете использовать round , ceil или floor .

Вы можете использовать Math.round(Math.random() * (max - min)) + min , однако это дает неравномерное распределение. Оба, min и max имеют только половину шансов на бросок:

Поскольку max исключено из интервала, у него даже меньше шансов на бросок, чем min .

С Math.floor(Math.random() * (max - min +1)) + min вы получаете идеально равномерное распределение.

Вы не можете использовать ceil() и -1 в этом уравнении, потому что у max теперь было немного меньше шансов на бросок, но вы также можете бросить (нежелательный) min-1 .

Ответ 2

Ответ 3

Из документации Mozilla Developer Network:

Ответ 4

Мы возвращаем функцию (заимствование из функционального программирования), которая при вызове возвращает случайное целое число между значениями bottom и top , включительно. Мы говорим "включительно", потому что мы хотим включить как нижний, так и верхний в диапазон чисел, которые можно вернуть. Таким образом, getRandomizer( 1, 6 ) вернет либо 1, 2, 3, 4, 5, либо 6.

(нижнее нижнее число, верхнее - большее число)

Math.random() возвращает случайный двойник между 0 и 1, и если мы умножим его на единицу плюс разницу между top и bottom , мы получим double где-то между 0 и 1+b-a .

Math.floor округляет число до ближайшего целого. Итак, теперь мы имеем все целые числа между 0 и top-bottom . 1 выглядит сбивающим с толку, но он должен быть там, потому что мы всегда округляем, поэтому верхнее число никогда не будет достигнуто без него. Производящееся десятичное число, которое мы генерируем, должно находиться в диапазоне от 0 до (1+top-bottom) , поэтому мы можем округлить и получить int в диапазоне от 0 до top-bottom

Код в предыдущем примере дал нам целое число в диапазоне 0 и top-bottom , поэтому все, что нам нужно сделать, это добавить bottom к этому результату, чтобы получить целое число в диапазоне bottom и top включительно.: D

ПРИМЕЧАНИЕ. Если вы передадите не целое значение или большее число, вы получите нежелательное поведение, но, если кто-либо его не попросит, я не буду вникать в код проверки аргументов, поскольку он довольно далек от намерения оригинальный вопрос.

Ответ 5

Альтернативно, если вы используете Underscore.js, вы можете использовать

Ответ 6

Возвращает случайное число от 1 до 10:

Возвращает случайное число от 1 до 100:

Ответ 7

Если вам нужна переменная между 0 и max, вы можете использовать:

Ответ 8

В других ответах не учитываются вполне разумные параметры 0 и 1 . Вместо этого вместо round вместо используйте ceil или floor :

Ответ 9

Вот MS DotNet Внедрение класса Random в javascript -

Применение:

Ответ 10

Используйте эту функцию, чтобы получить случайные числа между заданным диапазоном

Ответ 11

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

Итак, для тех людей, вот мое предложение:

Создайте случайное число, используя Math.random() (скажем, это n )

Если вы знаете, как читать таблицу случайных чисел, чтобы выбрать случайное число, вы знаете выше процесс (умножение на 1, 10, 100 и т.д.) не нарушает тот, который я упоминал в начале. (Потому что это изменяет только место десятичной точки.)

Изучите следующий пример и разработайте его для ваших нужд.

Если вам нужен образец [0,9], то пол n * 10 - ваш ответ, и если вам нужно [0,99], то пол n * 100 - ваш ответ и т.д.

Теперь введите свою роль:

Вы запросили номера среди определенного диапазона. (В этом случае вы смещены в этом диапазоне. - Приняв число из [1,6], свернув кубик, вы пристраститесь к [1,6], но все же это случайный случай, если и только если смерть непредвзята.)

Итак, рассмотрим ваш диапазон == > [78, 247] количество элементов диапазона = 247 - 78 + 1 = 170; (так как обе границы включены.

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

Ответ 12

Для случайного целого с диапазоном, попробуйте:

Ответ 13

Чтобы получить случайное число, скажем, между 1 и 6, сначала выполните:

Это умножает случайное число на 6 и затем добавляет к нему 0.5. Затем округлите число до положительного целого числа, выполнив:

Это округляет число до ближайшего целого числа.

Или, чтобы сделать это более понятным, выполните следующее:

В общем случае код для этого с использованием переменных:

Причиной отнять 0,5 от минимального значения является то, что использование только минимального значения позволит вам получить целое число, которое было бы больше вашего максимального значения. Убрав 0,5 от минимального значения, вы по существу предотвращаете округление максимального значения.

Надеюсь, что это поможет.

Ответ 14

Используя следующий код, вы можете генерировать массив случайных чисел без повторения в заданном диапазоне.

Ответ 15

Я знаю, что этот вопрос уже ответил, но мой ответ может помочь кому-то.

Я нашел этот простой метод в W3Schools:

Надеюсь, это поможет кому-то.

Ответ 16

Чтобы проверить эту функцию и варианты этой функции, сохраните ниже HTML/JavaScript в файл и откройте его в браузере. В коде будет показан график, показывающий распределение одного миллиона вызовов функций. Код также будет записывать случаи краев, поэтому, если функция вырабатывает значение, большее, чем max, или меньше, чем min, you.will.know.about.it.

Ответ 17

Случайное целое число между самым низким и самым высоким:

Не самое элегантное решение.. но что-то быстрое.

Ответ 18

Здесь я использую для генерации случайных чисел.

Мы выполняем high++ , потому что Math.random() генерирует случайное число между 0, (включительно) и 1 (исключение). Исключенный, означает, что мы должны увеличивать максимум на один до выполнения любой математики. Затем мы вычитаем низкое значение из максимума, давая нам наибольшее число для генерации - низкое, затем + низкое, что приводит к возврату в нормальное состояние и делает наименьшее число по крайней мере низким. то мы возвращаем результирующее число

random(7,3) может вернуться 3,4,5,6, or 7

Ответ 19

Uint8Array создает массив, заполненный числом до трех цифр, которое должно быть не более 999. Этот код очень короткий.

Ответ 20

Вот пример функции javascript, которая может генерировать случайное число любой указанной длины без использования Math.random():

Ответ 21

это мой выбор случайного числа в диапазоне, так как я хотел получить случайное число в диапазоне от базового до экспоненты. например base = 10, exponent = 2, дает случайное число от 0 до 100, в идеале и т.д.

если он помогает использовать его, вот он:

Ответ 22

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

В таких случаях мы можем использовать crypto.getRandomValues() для генерации безопасных целых чисел и отклонения любых сгенерированных значений, которые мы не можем равномерно отобразить в целевой диапазон. Это будет медленнее, но это не должно быть значительным, если вы не генерируете очень большое количество значений.

Чтобы прояснить проблему смещенного распределения, рассмотрим случай, когда мы хотим сгенерировать значение от 1 до 5, но у нас есть генератор случайных чисел, который выдает значения от 1 до 16 (4-битное значение). Мы хотим иметь одинаковое количество сгенерированных значений, сопоставляемых с каждым выходным значением, но 16 не делится поровну на 5: остается остаток от 1. Поэтому нам нужно отклонить 1 из возможных сгенерированных значений и продолжить только тогда, когда мы получим одно из 15 меньших значений, которые могут быть равномерно отображены в нашем целевом диапазоне. Наше поведение может выглядеть следующим образом:

В следующем коде используется аналогичная логика, но вместо этого генерируется 32-разрядное целое число, поскольку это самый большой общий целочисленный размер, который может быть представлен стандартным number типом JavaScript. (Это можно изменить, чтобы использовать BigInt если вам нужен больший диапазон.) Независимо от выбранного диапазона, доля генерируемых значений, которые отклоняются, всегда будет меньше 0,5, поэтому ожидаемое количество отклонений всегда будет меньше 1,0, и обычно близко к 0.0; Вам не нужно беспокоиться о том, что это зациклится навсегда.

Ответ 23

Вы можете этот фрагмент кода,

Ответ 24

Это может обрабатывать генерирование до 20 цифр UNIQUE случайных чисел

JS

введите описание изображения здесь

Ответ 25

/* Написать функцию с именем randUpTo которая принимает число и возвращает случайное целое число от 0 до этого числа? */

/* Напишите функцию с именем randBetween которая принимает два числа, представляющих диапазон, и возвращает случайное целое число между этими двумя числами. */

/* Напишите функцию с именем randFromTill которая принимает два числа, представляющих диапазон, и возвращает случайное число между min (включительно) и max (эксклюзивом). */

/* Напишите функцию с именем randFromTo которая принимает два числа, представляющих диапазон, и возвращает случайное целое число от min (включительно) до max (включительно) */

Ответ 26

Я сделал эту функцию, которая учитывает такие параметры, как min, max, exclude (список целых чисел, которые нужно исключить) и seed (на случай, если вам нужен генератор случайных чисел с семенами).

Может использоваться как:

Тогда вы можете сделать:

Ответ 27

    random (min, max) генерирует случайное число от min (включительно) до max (исключая)

Math.floor округляет число до ближайшего целого числа

Таким образом, чтобы сгенерировать случайное целое число от 4 до 8 включительно, вызовите вышеуказанную функцию со следующими аргументами:

Ответ 28

Чтобы получить крипто-сильное случайное целое число в ragne [x, y], попробуйте


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

Метод random - Случайное число от 0 до 1


По умолчанию метод random объекта Math генерирует (возвращает) случайное число от 0 до 1 .

Но на самом деле в большинстве случаев использование метода random в чистом виде не имеет смысла , так как дробное число от 0 до 1 с большим количеством знаков после запятой весьма редко применимо.

Метод random - Случайное число от 0 до 100


Метод random может генерировать случайные числа от 0 до 100 . Рассмотрим пример, как это сделать.

Как видно из примера, для того чтобы сгенерировать случайное число от 0 до 100 при помощи метода random , нужно скрипт для генерации чисел от 0 до 1 умножить на 100 .

Но и этот вариант работы метода random опять же практически бесполезен, так как, по сути, мы имеем все тоже дробное число, что и в предыдущем примере. В то время как для работы скриптов в основном требуется генерация целых чисел .

Здесь приходят на помощь методы round , floor или ceil из предыдущей заметки, которые позволяют округлять дробные числа.

Вот таким образом при помощи методов random и round объекта Math сначала генерируется , а потом округляется случайное число от 0 до 100 .

Вместо 100 можно указать любое другое число , например, 40 или 400 и т.д. Тогда метод random будет выдавать случайные числа в диапазоне от 0 до любого указанного.

Скрипт для генерации чисел из ПРОИЗВОЛЬНОГО диапазона


В предыдущем примере мы убедились в том, что метод random вместе с одним из методов округления может генерировать случайные целые числа в диапазоне от 0 до любого указанного числа .

При этом мы имеем дело с довольно простым javascript -кодом.

Но что если нужно сгенерировать число в произвольном диапазоне , т.е. в таком, где первое число отлично от 0 ?

Читайте также: