How to get a number of random elements from an array? How to get a number of random elements from an array? arrays arrays

How to get a number of random elements from an array?


Just two lines :

// Shuffle arrayconst shuffled = array.sort(() => 0.5 - Math.random());// Get sub-array of first n elements after shuffledlet selected = shuffled.slice(0, n);

DEMO:


Try this non-destructive (and fast) function:

function getRandom(arr, n) {    var result = new Array(n),        len = arr.length,        taken = new Array(len);    if (n > len)        throw new RangeError("getRandom: more elements taken than available");    while (n--) {        var x = Math.floor(Math.random() * len);        result[n] = arr[x in taken ? taken[x] : x];        taken[x] = --len in taken ? taken[len] : len;    }    return result;}


There is a one-liner unique solution here

 array.sort(() => Math.random() - Math.random()).slice(0, n)