数列があるとします: {n, n+1, n+2, ... n + m}
事前に数値を保存せずに、シーケンス {1,2,3,...m} を指定すると、元のセットをランダム (または少なくとも疑似ランダム) の順序で吐き出す関数 f() を作成したいと考えています。 .
たとえば、シーケンスが {10, 11, 12, 13, 14, 15, 16, 17} であるとします。
f(1) は 14 を返す可能性があります f(2) は 17 を返す可能性があります f(3) は 13 を返す可能性があります f(4) は 10 を返す可能性があります f(5) は 16 を返す可能性があります f(6) は 15 を返す可能性があります f(7) は 11 を返す可能性があります f(8) は 12 を返す可能性があります
過去のある時点で、同僚がこれを行うことができる数学的アルゴリズムを私に見せてくれましたが、それ以来、存在すること以外はほとんどすべてを忘れてしまいました. 事前にシーケンスを取得し、関数で使用されるシーケンスからいくつかの定数を生成する必要があったことを覚えています。そして、不思議に思っている人のために、悲しいことに、私はその同僚との連絡を失いました.
この質問の答えは私が望むものに近いように見えますが、答えによって出力を特定のシーケンスに事前に制限できるかどうかはわかりません。
編集:
もう少し明確にするために、元のシーケンスまたはシャッフルされたシーケンスを保存したくありません。元のシーケンスから関数 f() を生成したい。
イライラするのは、私がこれを見たということです.Googleでもう一度見つけるのに十分な記憶がありません.
Fisher-Yates アルゴリズムは、デッキの並べ替えやシャッフルには最適ですが、私が探しているものではありません。