Вопрос: Создание случайного числа между двумя номерами в JavaScript


Есть ли способ генерировать случайное число в указанном диапазоне (например, от 1 до 6: 1, 2, 3, 4, 5 или 6) в JavaScript?


1213


источник


Ответы:


Если вы хотите получить от 1 до 6, вы бы вычислили:

Math.floor(Math.random() * 6) + 1  

Где:

  • 1 - начальный номер
  • 6 - количество возможных результатов (1 + начало (6) - конец (1) )

1507



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

Что он делает «лишний», это позволяет случайные интервалы, которые не начинаются с 1. Таким образом, вы можете получить случайное число от 10 до 15, например. Гибкость.


1637



Math.random ()

Из Mozilla Документация разработчика:

// Returns a random integer between min (include) and max (include)

Math.floor(Math.random() * (max - min + 1)) + min;

Полезные примеры:

// 0 -> 10
Math.floor(Math.random() * 11);

// 1 -> 10
Math.floor(Math.random() * 10) + 1;

// 5 -> 20
Math.floor(Math.random() * 16) + 5;

// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;

179



Другие решения:

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

75



Функция Math.random () возвращает псевдослучайную точку с плавающей запятой   число в диапазоне [0, 1); то есть от 0 (включительно) до, но не   в том числе 1 (эксклюзивный)

Давайте add min randomlyиз 0в max-min

Случай 0

min+ 0 * ( max- minзнак равно мин

Дело 1

min+ 1 * ( max- minзнак равно Максимум

Случайный случай с использованием Math.random 0 <= r <1

min+ r * ( max- minзнак равно Икс , где Икс имеет диапазон мин <= Икс < Максимум

Вышеприведенный результат Икс является случайным числом. Однако из-за Math.random () наша левая граница включена, а правая граница является исключительной. Чтобы включить нашу правую границу, мы увеличиваем правую границу на 1 и выставляем результат.

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

Чтобы получить случайное число

generateRandomInteger(-20, 20);


28



var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;

15



Или, в Нижнее подчеркивание

_.random(min, max)

14



jsfiddle: https://jsfiddle.net/cyGwf/477/

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

function getRandomInteger(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min;
}

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

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

Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random


13



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.

function randomBetween(min, max) {
    if (min < 0) {
        return min + Math.random() * (Math.abs(min)+max);
    }else {
        return min + Math.random() * max;
    }
}

E.g

randomBetween(-10,15)//or..
randomBetween(10,20)//or...
randomBetween(-200,-100)

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.


11



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

function rand(min,max,interval)
{
    if (typeof(interval)==='undefined') interval = 1;
    var r = Math.floor(Math.random()*(max-min+interval)/interval);
    return r*interval+min;
}

var a = rand(0,10); //can be 0, 1, 2 (...) 9, 10
var b = rand(4,6,0.1); //can be 4.0, 4.1, 4.2 (...) 5.9, 6.0

Fixed version.


6



Example

Return a random number between 1 and 10:

Math.floor((Math.random() * 10) + 1);

The result could be: 3

Try yourself: here

--

or using lodash / undescore:

_.random(min, max)

Docs: - lodash - undescore


3