「取り出し」アルゴリズムとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 「取り出し」アルゴリズムの意味・解説 

「取り出し」アルゴリズム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/27 02:05 UTC 版)

フィッシャー–イェーツのシャッフル」の記事における「「取り出し」アルゴリズム」の解説

ダステンフェルドによって実装されたフィッシャー–イェーツのシャッフルは「内部でのシャッフル」である。これは、与えられ初期化済み配列要素を、その配列内でシャッフルするシャッフルされた配列別に生成することはない。配列が1本あればアルゴリズム実行できるため、シャッフルされる配列サイズ大きく省メモリ要求がある場合は「内部でのシャッフル」の方が優れているだろう。 配列初期化シャッフル併せて行う場合には、「取り出し」版のシャッフルを使うことで、メモリ使用量は2倍に増えるが、少しだけ計算速度速めることができる。このやり方では、配列を元配列生成配列の2本を用意し配列添字 i を増やしながら処理を行う。まず生成配列の i 番目に、配列初めから i までの中でのランダムな場所 j 番目の値を移動しその後に元配列の i 番目の値を、生成配列の j 番目に代入する。i と j は同じになることもあり、この場合初期化されていない値を「(同じ場所に)移動する」ことが起こりうるが、その値はすぐに上書きされるため問題はない。生成配列個別初期化する要はなく、交換処理も必要ない。「元配列」の値が、例えば0から n - 1 までの整数のようなシンプルに求められる場合であれば、「元配列」を変更するとがないため、関数などに置き換えるともできる計算速度改善計算量理論的に言えばオーダー変えず係数改善するだけであるので、計算方法極限まで最適化する必要がある場合に意味を成すと言える要素数が n の配列 a を、配列 sourceランダムにシャッフルしたコピー初期化する (配列添字はともに0から始まる): i を 0 から n - 1 まで増加させながら、以下を実行する j に 0 以上 i 以下のランダムな整数代入する もしも j と i が等しくないならば a[i] に a[j] を代入する a[j] に source[i] を代入する 「取り出し」版のシャッフル正しいことは以下のように帰納的に確認できる。完全にランダムな数値生成できるとするならば、n!異なった乱数全て一つずつ取得することができる。そうであればすべて異なった順列生成することができ、それらは完全に一通りずつの順列となる。「j と i が等しくない場合」の処理は、初期化されていない配列要素対すアクセス許容されているプログラミング言語であれば省略することができ、比較してよりコストかからないアルゴリズム実行できる。 「取り出し」版のもう一つ利点は、元配列データから完全に独立したランダムな要素取得できるであれば、元配列の総要素数 n が未知の場合でも使用できる点である。下記の例では配列 a が空の状態でスタートし順番追加されていく。配列 a の長さは見つけられ要素数をあらわす。 空の配列 a を、要素数が未知配列 sourceランダムにシャッフルしたコピー初期化する: source取得できる値が存在する間、下記実行する j に 0 以上「a の要素数」以下のランダムな整数代入する もしも j が「a の要素数」と同じならば a に source から取得した値を追加する そうでなければ a に a[j] を追加する a[j] に source から取得した値を代入する

※この「「取り出し」アルゴリズム」の解説は、「フィッシャー–イェーツのシャッフル」の解説の一部です。
「「取り出し」アルゴリズム」を含む「フィッシャー–イェーツのシャッフル」の記事については、「フィッシャー–イェーツのシャッフル」の概要を参照ください。

ウィキペディア小見出し辞書の「「取り出し」アルゴリズム」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「「取り出し」アルゴリズム」の関連用語

「取り出し」アルゴリズムのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



「取り出し」アルゴリズムのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのフィッシャー–イェーツのシャッフル (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS