PCGの種類とは? わかりやすく解説

PCGの種類

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/08/14 04:22 UTC 版)

Permuted congruential generator」の記事における「PCGの種類」の解説

PCGはいくつかの種類がある。内部使用する線形合同法8ビットから128ビットのものが使用される実用的な用途では64ビット128ビットのものだけが推奨されるそれより小さいものは統計的性質テスト使用される線形合同法加算される定数異な乱数列生成するために異なる値を使用できる定数任意の奇数で、明示的に指定する要はない。最下位ビットを1にすれば状態を保持する変数アドレス使ってもよい。 状態を出力変換する方法いくつかある。どの方法もうまく働くが、それぞれ余裕の幅が異なる。変換方法は以下の要素によって構築されるRR: ランダムな入力依存するビット回転で、入力半分長さ出力になる。 2 b {\displaystyle 2^{b}} ビット入力最上位の b − 1 {\displaystyle b-1} ビット回転量を決めるのに使われ、そのすぐ下の 2 b − 1 {\displaystyle 2^{b-1}} ビットが右に回転され出力され残り下位 2 b − 1 − ( b − 1 ) {\displaystyle 2^{b-1}-(b-1)} ビット捨てられるRS: ランダムな入力依存するビットシフトビット回転計算時間長いときに使用する。これも入力半分長さ出力になる。 2 b {\displaystyle 2^{b}} ビット入力最上位の b − 3 {\displaystyle b-3} ビットによりシフト量が決定され、すぐ下の 2 b − 1 + 2 b − 3 − 1 {\displaystyle 2^{b-1}+2^{b-3}-1} ビット適用され、その中の下位 2 b − 1 {\displaystyle 2^{b-1}} ビット出力される残り下位 2 b − 1 − 2 b − 3 − ( b − 4 ) {\displaystyle 2^{b-1}-2^{b-3}-(b-4)} ビット捨てられる。 XSH: Xorshift操作 (x ^= x >> (定数))。定数次の操作捨てられないビット半分端数切り捨て)となるようにする。 XSL: XSHの (定数) の部分全体長さ半分したものRXS: XSHの (定数) の部分ランダムな入力依存する)量にしたもの。 M: 定数乗算。 以下に挙げるものは推奨される組み合わせである。擬似コードも示す。 XSH-RR: xorshift上位ビット下位ビット混ぜビット 63-59 で回転量を決定しビット 27-58 に適用する。(6432ビットcount = (int)(x >> 59); x ^= x >> 18; return rotr32((uint32_t)(x >> 27), count); XSH-RS: 上の方法よりシフト量を決めるのに使われるビット少ない。(6432ビットcount = (int)(x >> 61); x ^= x >> 22; return (uint32_t)(x >> (22 + count)); XSL-RR: XSH-RRを単純化したもので、これは64ビットマシンで128ビットの状態を持つ実装最適化されている。(12864ビットcount = (int)(x >> 122); x64 = (uint64_t)(x ^ (x >> 64)); return rotr64(x64, count); RXS-M-XS: 状態の半分出力する場合この方法は最も遅いが最も強い方法である。以下に示すように状態の全体出力する場合は最も弱い方法になる。これを使う場合は状態のサイズ32ビットまたは64ビット制限される。(3232ビットcount = (int)(x >> 28); x ^= x >> (4 + count); x *= 277803737u; return x ^ (x >> 22); (6464ビットcount = (int)(x >> 59); x ^= x >> (5 + count); x *= 12605985483714917081u; return x ^ (x >> 43); XSL-RR-RR: RXS-M-XSと同様に128ビットの状態から128ビットの状態に変換する。(128128ビットcount = (int)(x >> 122); low64 = rotr64((uint64_t)(x ^ (x >> 64)), count); high64 = rotr((uint64_t)(x >> 64), low64 & 63); return (uint128_t)high64 << 64 | low64; それぞれの変換元に戻すことができる(つまり全単射)か切り捨てである。したがってそれらを合成したものはある出力得られる入力個数は常に同じである。 もし 2 128 {\displaystyle 2^{128}} より長い周期必要になった場合複数生成器使って拡張することができる。例え生成器2つ使う場合生成器1の出力が0になるごとに生成器2の出力1つ進めて最終的な出力生成器1の出力生成器2の出力の和とすることでそれぞれの周期の積の周期になる。

※この「PCGの種類」の解説は、「Permuted congruential generator」の解説の一部です。
「PCGの種類」を含む「Permuted congruential generator」の記事については、「Permuted congruential generator」の概要を参照ください。

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



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

辞書ショートカット

すべての辞書の索引

「PCGの種類」の関連用語

PCGの種類のお隣キーワード
検索ランキング

   

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



PCGの種類のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS