Создайте диапазон между двумя числами в JavaScript - PullRequest
0 голосов
/ 02 августа 2020

Учитывая верхнюю границу в массиве - elementsGroupItemsCount, например, который имеет 101 элемент. Как мне случайным образом выбрать минимальное и максимальное значение из этого диапазона 0-100, где минимальное и максимальное значение разделены на n чисел и должны содержать n элементов.

Например, если числа должны содержать 6 элементов , допустимыми решениями будут следующие:

  • 5,10
  • 12,17
  • 19,24

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

Ответы [ 3 ]

3 голосов
/ 02 августа 2020

Согласно комментарию Боба, похоже, вам просто нужно получить случайное число от 0 до длины массива (за вычетом требуемого диапазона) для вашего нижнего предела, а затем добавить требуемый диапазон обратно к нему для верхнего предела. например,

let myArray = [];

for (let i = 0; i<101; i++){
  myArray.push({objectID:i})
}

let requiredSpan = 6;
let lowerBand = Math.floor(Math.random()*(myArray.length-requiredSpan));
let upperBand = lowerBand + requiredSpan-1;

console.log(lowerBand, upperBand);
2 голосов
/ 02 августа 2020

Просто, чтобы завершить ответ Марка Тейлора здесь более удобным способом

let myArray = [];

for (let i = 0; i<101; i++){
  myArray.push({objectID:i})
}

const randomMaxMin = max => min => Math.floor(Math.random()*(max-min))
const lowerBand = requiredSpan => length => randomMaxMin(length)(requiredSpan);
const upperBand = requiredSpan => lowerBand => requiredSpan + lowerBand-1;

const getLowerAndUpperBand = requiredSpan => length => {
  const lower = lowerBand(requiredSpan)(length);
  return {
    lower: lower,
    upper: upperBand(requiredSpan)(lower)
  }
}

console.log(getLowerAndUpperBand(6)(myArray.length))

Вы даже можете специализировать общую c функцию, выбрав requiredSpan

const getLowerAndUpperBandSix = getLowerAndUpperBand(6)
console.log(getLowerAndUpperBandSix(myArray.length))
0 голосов
/ 03 августа 2020
getNRandomNumbers = (elementsGroupItems,requiredSpan) => {
  var result = []
  var startingValue = elementsGroupItems[0]
  var endingValue = elementsGroupItems[elementsGroupItems.length -1]
  var initialNum = startingValue + Math.floor(Math.random()*(endingValue - requiredSpan))
  for(let i=initialNum; i< (initialNum+requiredSpan); i++){
    result.push(i)
  }
  return result
}

console.log(getNRandomNumbers([1,2,3,4],2)) //example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...