各数値を生成する前にシードが与えられたときに高速に動作するように特化された疑似乱数ジェネレーターを探しています。私がこれまで見てきたほとんどのジェネレーターは、シードを一度設定してから、長い数列を生成することを前提としています。これまで見てきたのと少し似ているのはパーリン ノイズだけですが、あまりにも「滑らかな」データを生成します。同様の入力に対して、同様の結果が生成される傾向があります。
ジェネレーターの宣言は次のようになります。
int RandomNumber1(int seed);
または:
int RandomNumber3(int seedX, int seedY, int seedZ);
入力をハッシュして結果を RandomNumber1 に渡すことで RandomNumber3 を実装することができるため、適切な RandomNumber1 があれば十分だと思いますが、一部の実装で独立した入力を使用できる場合に備えて、2 番目のプロトタイプを作成しました。
このジェネレーターの使用目的は、グリッドに木を配置し、ランダムな樹種と各場所のランダムな空間オフセットを決定することで森林を生成するなど、手続き型コンテンツ ジェネレーターに使用することです。
プロシージャルコンテンツはレンダリング中にリアルタイムで大量に作成されるため、ジェネレーターは非常に効率的 (500 CPU サイクル未満) である必要があります。