1. ホーム
  2. javascript

[解決済み] 配列からランダムな要素数を得るには?

2022-05-02 12:14:12

質問

私は、「javascriptで配列からランダムに要素にアクセスする方法」を研究しています。私はこれに関する多くのリンクを見つけました。のように。 JavaScript の配列からランダムな項目を取得する

var item = items[Math.floor(Math.random()*items.length)];

しかし、この場合、配列から選択できるのは1項目だけです。もし、複数の要素が欲しい場合は、どのようにすればよいのでしょうか?配列から複数の要素を取得するにはどうすればよいのでしょうか?

どのように解決するのですか?

この非破壊的(かつ高速)な機能を試してみてください。

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;
}