2013-10-11 11 views
7

のk番目の最小数を計算する方法、線形合同法は、以下の漸化式で定義される。<a href="http://en.wikipedia.org/wiki/Linear_congruential_generator" rel="nofollow">Wikipedia</a>によれば、線形合同法

0 < m0 <= a < m0 <= c < m0 <= X(0) < mは整数で
X(n) = {a.X(n-1) + c} mod m 

ジェネレータを指定する定数。

acmX(0)、及びnが与えられ、iの値がセット{X(0), X(1), ..., X(n)}非常に高速のk番目の最小値(1 <= k <= n)を決定することができますか?その後、

(n >= m)なら...あなたが生成中にk最低のアイテムを格納していないと仮定すると、

+2

LCGが正しく設計されていれば、範囲は '{0..m} 'になるので、k-smallest X(i)はおそらく' k-1'です。 – RBarryYoung

+0

この質問は、math.stackexchange.comでもうまく収まるでしょう。 – felix

+2

@RBarryYoung:指定された 'n 'が期間未満ではありません。 –

答えて

1

- (O(n)よりも高速なアルゴリズムをソートすることにより、ベース)と定数は、全期間(ref here)の基準を満たしますk番目の最小アイテムはk-1になります。

(n >= m)と定数が基準を満たしていないか、(n < m)は、あなたが終了することができ、線形探索を行う必要がある場合k-1ある日に最低番目k場合。

関連する問題