フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル

JavaScriptJavaScriptBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、フィッシャー・ヤーツのアルゴリズムとそのJavaScriptにおける実装方法を調べます。具体的には、このアルゴリズムを使って配列をシャッフルする方法に焦点を当てます。この実験が終わるとき、フィッシャー・ヤーツのアルゴリズムがどのように機能するか、また配列内の要素の順序をランダム化するためにどのように使えるかを、より深く理解するようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28615{{"フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル"}} javascript/data_types -.-> lab-28615{{"フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル"}} javascript/arith_ops -.-> lab-28615{{"フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル"}} javascript/comp_ops -.-> lab-28615{{"フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル"}} javascript/loops -.-> lab-28615{{"フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル"}} javascript/array_methods -.-> lab-28615{{"フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル"}} javascript/spread_rest -.-> lab-28615{{"フィッシャー・ヤーツのアルゴリズムを使った配列のシャッフル"}} end

配列のシャッフルアルゴリズム

JavaScriptで配列をシャッフルするには、フィッシャー・ヤーツのアルゴリズムを使います。このアルゴリズムは配列の要素をランダムに並び替え、新しい配列を返します。

コーディングの練習を始めるには、ターミナル/SSHを開き、nodeと入力します。

以下はフィッシャー・ヤーツのアルゴリズムのコードです。

const shuffle = ([...arr]) => {
  let m = arr.length;
  while (m) {
    const i = Math.floor(Math.random() * m--);
    [arr[m], arr[i]] = [arr[i], arr[m]];
  }
  return arr;
};

配列をシャッフルするには、配列をshuffle関数に渡すと、シャッフルされた配列が返されます。たとえば:

const foo = [1, 2, 3];
shuffle(foo); // returns [2, 3, 1], and foo is still [1, 2, 3]

まとめ

おめでとうございます!あなたは配列をシャッフルする実験を完了しました。あなたの技術を向上させるために、LabExでさらに多くの実験を練習することができます。