Skip to content

Instantly share code, notes, and snippets.

@Otto-Vector
Last active January 28, 2022 23:10
Show Gist options
  • Save Otto-Vector/5ed8e79a0add694e2db3367f4f8bff6d to your computer and use it in GitHub Desktop.
Save Otto-Vector/5ed8e79a0add694e2db3367f4f8bff6d to your computer and use it in GitHub Desktop.
randomDifferentIntegersArrayCreator
// возвращает массив из необходимого числа элементов needArraySize
// рандомных /НЕ ОДИНАКОВЫХ/ целых чисел (from 0 to realArraySize)
// к которому можно потом "замапится" для перемешивания значений искомого массива, например:
// randomDifferentIntegersArrayCreator(array.length)(from 1 to array.length).map(el=>array[el])
const randomDifferentIntegersArrayCreator = (realArraySize = 1) =>
(needArraySize = realArraySize) => {
const justArray = (a, b = []) => { while (a--) b[a] = a; return b }
let arrayOfNumbers = justArray(realArraySize),
nextNumber, buffered, size = realArraySize
while (size) {
nextNumber = Math.floor(Math.random() * (--size + 1))
buffered = arrayOfNumbers[size]
arrayOfNumbers[size] = arrayOfNumbers[nextNumber]
arrayOfNumbers[nextNumber] = buffered
}
const needToSliced = Math.min(realArraySize, needArraySize)
return arrayOfNumbers.slice(-needToSliced)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment