Flash で Perlin Noise Number を返す関数を作成しています。この関数には、静的シードから乱数を返す関数が必要です。残念ながら、Actionscript のデフォルトの Math.random はこれを行うことができません..
インターネットで長い間検索しましたが、パーリン ノイズ関数に適合するソリューションが見つかりませんでした。
次のコードを試しました:
public static var seed:int = 602366;
public static function intNoise(x:int, y:int):Number {
var n:Number = seed * 16127 + (x + y * 57);
n = n % 602366;
seed = n | 0;
if (seed <= 0) seed = 1;
return (seed * 0.00000166) * 2 - 1;
}
この関数は乱数を作成しますが、シードは常に変化するため、パーリン ノイズでは機能しません。
public static function intNoise(x:int, y:int):Number {
var n:Number = x + y * 57;
n = (n<<13) ^ n;
return ( 1 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0);
}
この関数は、従った Perlin Noise チュートリアルから取得しました: Perlin Noiseですが、1 しか返らないようです。