キャリー付き乗算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/04/10 08:01 UTC 版)
![]() | 原文と比べた結果、この記事には多数の(または内容の大部分に影響ある)誤訳があることが判明しています。情報の利用には注意してください。(2025年4月) |
キャリー付き乗算 (キャリーつきじょうさん、英: multiply-with-carry, MWC) は、George Marsagliaにより開発された整数疑似乱数生成用の手法である。乱数種には2〜数千の値を必要とする。MWC の主な長所は、単純な整数演算からなっており非常に高速に動作するという点と、260 - 22000000 という非常に長周期であるという点である。
基本理論
MWC 列は b を法とする剰余からなる。b = 232 とするのが普通だが、これはコンピュータで扱う整数が通常そのようになっているからである。ただ、b = 232 − 1とすることもある。これは、232 − 1 を法とする演算は 232 を法とする演算を少し変更するだけで済み、さらに、b = 232 の MWC の理論にはいくつか厄介な問題があるが、b = 232 − 1 ではそれを回避できるからである。
その最も一般的な形では、lag-r MWC 生成器は基数 b、乗数 a、そして r + 1 個の乱数種を必要とする。乱数種は r 個の b の剰余
- x0, x1, x2 ,..., xr−1
と最初のキャリー cr−1 < a である。
そして、lag-r MWC 列は
- キャリー付き乗算のページへのリンク