根据Wikipedia,线性同余生成器由下面的递归关系定义:
X(n) = {a.X(n-1) + c} mod m
其中0 < m
,0 <= a < m
,0 <= c < m
,0 <= X(0) < m
是指定生成器的整数常量。
如果给出a
,c
,m
,X(0)
和n
的值,我可以确定k
- 集合1 <= k <= n
的最小值({X(0), X(1), ..., X(n)}
)非常快? (快于O(n)
- 基于排序算法)
答案 0 :(得分:1)
假设您在生成期间没有存储k
个最低项目......
如果(n >= m)
且常量符合整个期间的标准(ref here),那么k
个最小的项目将为k-1
。
如果(n >= m)
并且常量不符合条件或(n < m)
那么您需要进行线性搜索,如果k
- 最低的日期为{{1},则可以终止}}