1

私が取り組んでいるゲームで本当に乱数を取得する必要があります。問題は、 Math.random() がタイムスタンプに基づいているため、まったく同じ結果が得られることです。これを使用してゲームオブジェクトをランダムに配置し、ランダムな位置を即座に取得する必要があります。Math.random() よりも良い方法はありますか?

https://github.com/suprMax/monkyTime/blob/master/static/monkytime.js#L201

オブジェクトは互いに非常に近くに配置されています。リクエストアニメーションフレームから高精度の時間を盗むことをよりランダムにしようとしましたが、役に立ちませんでした。

4

3 に答える 3

1

ランダム ジェネレーターが現在の時刻からシードされるという事実は、後続の呼び出しで同じ結果を返さないという事実です。呼び出すたびに、新しい値がシードされます。クロックの影響を受けるのは初期値のみです。

于 2012-05-29T13:49:06.327 に答える
0

ゲーム内のオブジェクトの配置には、ほとんどのブラウザの疑似乱数ジェネレータで十分です。確かに、適切に実装した場合、同じ結果が何度も得られることはありません。

結果を予測不可能にする必要がある場合 (暗号化など) は、暗号的に安全な PRNGを調べる必要があります。

于 2012-05-29T13:52:09.713 に答える
0

十分にランダムでない場合Math.random()(疑似乱数ジェネレーター) は、真のランダム ジェネレーターを使用します。

十分なエントロピーを得るには、リモート データを使用する必要があります (送風機のボール、ホワイト ノイズなど)。このためには、おそらく既存のサービスを作成または使用する必要があります。

于 2012-05-29T13:45:45.230 に答える