cannibal_corpse
@cannibal_corpse
Верстальщик руками

Создать массив строк случайной длины из предложенных строк?

Есть некоторое количество строк или массив со строками:

let arr = ['Яблоко', 'Груша', 'Апельсин', 'Слива',];


Задача:
Создать несколько массивов случайной длины из массива arr;

Пример результата:
arr1 = ['Яблоко'];
arr2 = ['Яблоко', 'Груша', 'Апельсин'];
arr3 = ['Слива', 'Груша'];

Как это сделать?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Генерируешь случайное число в промежутке от 1 до arr.length. Это длина будущего массива.

В цикле выбираешь случайные значения из arr, вносишь в новый массив.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
const createArr = (source, maxLength) =>
  [...Array(1 + Math.random() * maxLength | 0)].map(() => source[Math.random() * source.length | 0]);


const [ arr1, arr2, arr3 ] = [...Array(3)].map(() => createArr(arr, 5));
Ответ написан
wataru
@wataru
Нужен генератор случайных чисел. в JS есть Math.random();

Далее, чтобы сгенерировать один массив пройдитесь по всему массиву строк и добавляйте текущую строку к ответу, если random() < kThreshold. kThreshold подбирайте исходя из того, какой длины вам нужны случайные массивы. В среднем в ответе будет kThreshold*array.length() элементов. Т.е. при kThreshold=0.5, в среднем сгенерированные массивы будут содержать по половине всех строк.

Минус этого метода, что чаще всего сгенерированные массивы будут средней длины. Массив из всех строчек или из одной единственной строчки будут маловероятны, но это может и не минус - зависит от того, зачем вам это надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы