如何计算线性同余生成器的第k个最小数

时间:2013-10-11 13:07:42

标签: algorithm math

根据Wikipedia,线性同余生成器由下面的递归关系定义:

X(n) = {a.X(n-1) + c} mod m

其中0 < m0 <= a < m0 <= c < m0 <= X(0) < m是指定生成器的整数常量。

如果给出acmX(0)n的值,我可以确定k - 集合1 <= k <= n的最小值({X(0), X(1), ..., X(n)})非常快? (快于O(n) - 基于排序算法)

1 个答案:

答案 0 :(得分:1)

假设您在生成期间没有存储k个最低项目......

如果(n >= m)且常量符合整个期间的标准(ref here),那么k个最小的项目将为k-1

如果(n >= m)并且常量不符合条件或(n < m)那么您需要进行线性搜索,如果k - 最低的日期为{{1},则可以终止}}