エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
配列からn個の要素を重複無しでランダムに取り出す - m2
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
配列からn個の要素を重複無しでランダムに取り出す - m2
真っ先に思いついたのはコレ。 function random(array, num) { var a = array.concat(); // clone. var ... 真っ先に思いついたのはコレ。 function random(array, num) { var a = array.concat(); // clone. var r = []; var l = array.length; var n = Math.min(num, array.length); while(n-- > 0) { var i = Math.floor(Math.random() * l--); r.push(a[i]); a.splice(i, 1); } return r; } ランダムに1個取り出して、元の配列からそれを削除していくことで重複を避けるものです。 実際に使う分にはこれで全く問題ないと思うんですが、扱う数が大きくなってくると splice がボトルネックになってきます(LinkedListではないですからね)。 そこで、こう書き換えてみました。 funct