2017-01-14 2 views
1

Math.random()メソッドを使用して、3つのビットマップのうちの1つを多くのオブジェクトに割り当てて、乱数を呼び出してスクリーン上に表示されたときにそれらがすべて異なって見えるようにしてから、その数値が0 1つはオブジェクトごとに1つですが、同じビットマップのようなパターンが何度も連続して表示されています。そして、このようなことをランダム化する良い方法はありますか?JavaのMath.random()メソッドは本当にランダムですか?

+0

'' ...これは私がパターンがないところを探しているだけなのですか? '' - かなり可能性があります。 'Math.random()'は決して "真にランダム"になることはできませんが、その(そしてほとんどの)プログラムのニーズを満たすのに十分なランダム*でなければなりません。 –

+1

どのように課題を実行していますか? 3つのビットマップのどれにも本当に等しい確率がありますか? –

答えて

1

「本当に」ランダムではありませんが、「十分にランダム」です。大気騒音のような真のランダムな音源はほとんどありません。おそらく、ビットマップを作成するために使用するメソッドは、自然に同様のパターンを作成します。

0

JDK1.7 doc:返された値は、その範囲から(ほぼ)一様分布で擬似ランダムに選択されます。

1

毎回異なるシーケンスが生成されるようにシードを使用する必要があるかもしれないと思います。ランダムの2つのインスタンスが同じシードで作成され、メソッド呼び出しの同じシーケンスがそれぞれのために作られている場合、彼らは生成し、数字の同一の配列を返します

https://docs.oracle.com/javase/7/docs/api/java/util/Random.html)を参照してください。このプロパティを保証するために、特定のアルゴリズムがクラスに指定されています。ランダム

シードを使用すると、同じ結果を生成したり、異なるシードを使用したりすることで、異なる番号シーケンスが生成されることが保証されます。

2

標準のJava RNGよりも「ランダムな」ものが必要な場合は、暗号化RNGを使用する必要があります。これは遅くなり、RNGはさまざまな内部システム入力と提供する任意のシードを取りますので、シードを設定することで同じランダムシーケンスを繰り返すことはできません。詳細はjava.security.SecureRandomを参照してください。

関連する問題