c#でRandom()シーケンスからシードを取得することは可能ですか?
私の目標は、プレイヤーがキャラクターを作成する一種のエディターを作成することです。たとえば、さまざまな目のセットで選択し、配置し、髪などを選択できるようになります。最終的には、異なる数列。
私の目標は、このキャラクターを他の人と共有できるようにすることなので、それでシードを取得したいと思います。私は彼らに種を与えるだけで、彼らは私が作成した正確なキャラクターを持つでしょう.
@SLaksへのコメントに基づくと、あなたが尋ねている質問は、あなたが解決しようとしている問題とは何の関係もないと思います。
あなたが解決しようとしている問題は次のとおりです。ユーザー定義の属性と値のセットを取得し、それらを友人間で簡単に受けられるものに変換するにはどうすればよいですか?
これはまったく同じ問題です。長くて複雑なURLを取得して短いURLに変換するにはどうすればよいですか。
そういうものとして、私はこの有名な質問を見ていきます:URL短縮サービス:URL短縮サービスをコーディングする方法は?
そこでは、全単射関数の使用法と、独自の問題に使用できる優れたアルゴリズムの説明が表示されます。これを使用して、サンプルシーケンス(たとえば23,56,45,78,80
)を1文字または2文字のコードに変換できます。
既存の Random クラス インスタンスまたは生成されたシーケンスからシードを直接バックアウトする方法はありません。ただし、Random クラスを作成する場合は、シードを指定できるコンストラクターを使用できます。このシードを保存すると、別の人に渡すことができます。
構築をランダムにしたいが、そのシードを保存する場合、1 つのオプションはランダムの 2 つのインスタンスを使用することです。最初のものを使用してシードを作成し、次にそのシード番号で 2 番目のものを作成できます (これを保存して他の人に渡します)。
最初にシードを作成するときは、シードを保存する必要があります。
シードの代わりに、キャラクターの属性だけを保存してみませんか? それは簡単で、非常に理にかなっています。
さらに、ユーザーが独自のシーケンスを作成する場合、「シード」はありません。
もう 1 つのアプローチは、事前に生成された一連の特性 (つまり、既知のシードを持つランダム シーケンスに基づく) をユーザーが選択できるようにすることです。このようにして、シーケンスの小さなシードを保存するだけで済みます (カスタム疑似乱数ジェネレーターを使用する可能性があります)。