kenid aa4c0oola1s7wwtestv2 math random

Содержание

  1. Поддержка браузерами
  2. Описание
  3. Синтаксис
  4. Возвращаемое значение
  5. На этой странице
  6. Синтаксис
  7. Возвращаемое значение
  8. Примеры
  9. Получение случайного числа от 0 (включительно) до 1 (не включая)
  10. Получение случайного числа в заданном интервале
  11. Получение случайного целого числа в заданном интервале
  12. Получение случайного целого числа в заданном интервале, включительно
  13. 20 Answers 20
  14. Important

Поддержка браузерами

Описание

Метод Math.random() возвращает псевдослучайное число между 0 и 1.

Псевдослучайное число создаётся в диапазоне от 0 (включительно) до 1 (исключительно), то есть возвращаемое число может быть нулём, но всегда будет меньше единицы.

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

Синтаксис

Возвращаемое значение

  • Число с плавающей точкой в диапазоне от 0 (включительно) до 1 (исключительно).

Метод Math.random() в основном используют для генерации псевдо-случайного числа в определённом диапазоне. Например, нам надо получить число в диапазоне от 50 до 100 (включительно). Для этого нам придётся написать следующий код:

Рассмотрим подробно как работает наш пример и почему используется именно такая форма записи. Первым делом нам надо указать минимальное получаемое значение из нужного диапазона, в нашем примере это число 50. Теперь нам нужно каким-то образом получить случайное число, которое при сложении с числом 50 не будет превышать в сумме число 100. Как мы знаем из математики, нахождение неизвестного слагаемого делается путём вычитания из суммы известного слагаемого. 100 — 50: получаем разность 50. Теперь для проверки, подходит нам это число или нет, умножим его на возможное минимальное и максимальное число возвращаемое методом Math.random(). Умножаем минимальное 0.004704564176082244 * 50 = 0.2. и максимальное 0.9999999999746223 * 50 = 49.9. И так мы видим, что при умножении разности на максимально возможное случайное число в результате даёт нам целую часть числа на единицу меньше, чем нужно. Чтобы исправить ситуацию, нам нужно всего лишь прибавить одну единицу к 50, т.е. 50 + 1 = 51, теперь если полученное число умножить на максимально возможно число возвращаемое методом у нас будет выходить число 50.9. — это то, что нам надо, после сложения чисел 50.9 + 50, получаем 100.9. Для округления числа до целого используем метод Math.floor(). Таким образом, формула для получения нужного числа выглядит следующим образом: max — min + 1. Перепишем приведённый выше пример:

Эта формула особенно полезна, когда заранее неизвестно в каком диапазоне необходимо получить случайное число.

На этой странице

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

Примечание: метод Math.random() не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Вместо него используйте Web Crypto API (API криптографии в вебе) и более точный метод window.crypto.getRandomValues() .

Синтаксис

Возвращаемое значение

Псевдослучайное число с плавающей запятой от 0 (включительно) до 1 (не считая).

Примеры

Обратите внимание, что поскольку числа в JavaScript являются числами с плавающей запятой стандарта IEEE 754 с поведением при округлении к ближайшему чётному, все эти диапазоны (исключая диапазон с простым вызовом Math.random() ), не точны. Если заданы очень большие границы (2 53 или выше), возможен крайне редкий случай вычисления обычно исключённой верхней границы.

Получение случайного числа от 0 (включительно) до 1 (не включая)

Получение случайного числа в заданном интервале

Этот пример возвращает случайное число в заданном интервале. Возвращаемое значение не менее (и может быть равно) min и не более (и не равно) max .

Получение случайного целого числа в заданном интервале

Этот пример возвращает случайное целое число в заданном интервале. Возвращаемое значение не менее min (или следующее целое число, которое больше min , если min не целое) и не более (но не равно) max .

Может показаться заманчивым использовать Math.round() для округления, но это может сделать распределение неравномерным, что может оказаться неприемлимым для ваших нужд.

Получение случайного целого числа в заданном интервале, включительно

Функция getRandomInt() выше включает минимальное значение, но не включает максимальное. Но что если вам нужно, чтобы влючалось и минимальное, и максимальное значение? Функция getRandomIntInclusive() решает этот вопрос.

Is there a way to generate a random number in a specified range (e.g. from 1 to 6: 1, 2, 3, 4, 5, or 6) in JavaScript?

20 Answers 20

Important

The following code works only if the minimum value is 1 . It does not work for minimum values other than 1 .

If you wanted to get a random integer between 1 (and only 1) and 6, you would calculate:

  • 1 is the start number
  • 6 is the number of possible results (1 + start (6) — end (1))

What it does «extra» is it allows random intervals that do not start with 1. So you can get a random number from 10 to 15 for example. Flexibility.

From the Mozilla Developer Network documentation:

    (Math.random() * 6 | 0) + 1

(Math.random() * 6) + 1

sintaxis? I haven’t seen it before! Elegant solution but hard to understand. – DiegoDD May 31 ’13 at 22:49

a and Bitwise OR (a | 0) are faster ways to write Math.floor(a) – edi9999 Jul 18 ’13 at 15:39

(Math.random() * (50000000000000 — 0 + 1)) + 0 and Math.floor(Math.random() * (50000000000000 — 0 + 1)) + 0 – BrunoLM May 25 ’16 at 23:50

TL;DR

To get the random number generateRandomInteger(-20, 20);

EXPLANATION BELOW

We need to get a random integer, say X between min and max.

i.e min min + 0 * ( max — min ) = min

min + 1 * ( max — min ) = max

Random Integer: to get a random integer between min and max , use the following code

Random Floating Point Number: to get a random floating point number between min and max , use the following code

Math is not my strong point, but I’ve been working on a project where I needed to generate a lot of random numbers between both positive and negative.

Of course, you can also add some validation to make sure you don’t do this with anything other than numbers. Also make sure that min is always less than or equal to max.

I wrote more flexible function which can give you random number but not only integer.

Return a random number between 1 and 10:

The result could be: 3

or using lodash / undescore:

Inspite of many answers and almost same result. I would like to add my answer and explain its working. Because it is important to understand its working rather than copy pasting one line code. Generating random numbers is nothing but simple maths.

I was searching random number generator written in TypeScript and I have written this after reading all of the answers, hope It would work for TypeScript coders.

Adding float with fixed precision version based on the int version in @Francisc’s answer:

and for int answer

Math.random() is fast and suitable for many purposes, but it’s not appropriate if you need cryptographically-secure values (it’s not secure), or if you need integers from a completely uniform unbiased distribution (the multiplication approach used in others answers produces certain values slightly more often than others).

In such cases, we can use crypto.getRandomValues() to generate secure integers, and reject any generated values that we can’t map uniformly into the target range. This will be slower, but it shouldn’t be significant unless you’re generating extremely large numbers of values.

To clarify the biased distribution concern, consider the case where we want to generate a value between 1 and 5, but we have a random number generator that produces values between 1 and 16 (a 4-bit value). We want to have the same number of generated values mapping to each output value, but 16 does not evenly divide by 5: it leaves a remainder of 1. So we need to reject 1 of the possible generated values, and only continue when we get one of the 15 lesser values that can be uniformly mapped into our target range. Our behaviour could look like this pseudocode:

The following code uses similar logic, but generates a 32-bit integer instead, because that’s the largest common integer size that can be represented by JavaScript’s standard number type. (This could be modified to use BigInt s if you need a larger range.) Regardless of the chosen range, the fraction of generated values that are rejected will always be less than 0.5, so the expected number of rejections will always be less than 1.0 and usually close to 0.0; you don’t need to worry about it looping forever.

Источник: computermaker.info

Техника и Гаджеты
Добавить комментарий