上記のすべての基準に適合するアルゴリズムを知っている人はいますか?シード番号と、出力番号を含める範囲(入力番号が含まれる範囲にもなります)を指定する必要があります。この関数には、操作を逆にする対応する関数も必要です。
例えば:
シード5と範囲5〜35を渡すと、番号27を受け取ります。次に、同じ範囲を使用して操作を逆にする関数にこれを渡すと、番号5が返されます。
元の番号を保存することも、入力された番号のリストを反復処理することもできません。これは暗号化の強度である必要はなく、可能な限り高速である必要があります。
この種の説明に当てはまると私が考えることができるのは、暗号化アルゴリズムだけです。正しい方向のポイントでさえ素晴らしいでしょう。
編集
大きすぎてメモリに保持できないランダムな(見た目の)数値のセット(おそらく3e12の数値)を表す方法を見つけて、特定の範囲の数値がそのセットに表示されるかどうかをテストしようとしています。
例えば。ランダムな集合(4、22、7、343、67、38、2)を与える関数がある場合、その集合の1から30までの数値を教えてください。セット(4、22、7、2)を取り戻します。