こういうのが欲しい

値を1〜nまでの整数からランダムに抽出する関数で、シードと何番目を渡すとそれなりの値がかえってくる高速な関数。
nが2の乗数で、線形合同法 (linear congruential method)を使って、ぐりぐりループすれば出来るんだけど、もっと高速にできないのかなぁっということで、最小完全ハッシュ関数とかいうのがそれに近い感じなのだけど、違うみたいで、うーむっとなってます。