Java のランダム関数についてのある程度の理解
random() は、乱数生成がシードに関連しているため、シードが同じである限り、生成される乱数は同じです。シードが指定されていない場合、シード パラメータは現在時刻に基づいて生成されます。実際、Random は疑似乱数であり、同じシードが同じシーケンスを生成することに注意してください。は同じ値ではありません)。
同じシーケンスが生成されると言われるのはなぜですか? ここでは、コンストラクターがシードを設定した後に乱数がどのように生成されるかを理解する必要があります (それが自分で指定されるか、デフォルトでシステムによって生成されるか)。 () 関数は、現在のシードに基づいて乱数を生成します。乱数を生成した後、生成された乱数をシードに割り当て、乱数を生成し続けます。
したがって、次の 2 つのコードを注意深く理解してください
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>public static void main(String[] args) {<br /></li><li><br /></li><li> for (int i=0;i<10;i++){<br /></li><li> Random r = new Random(10);<br /></li><li> data = r.nextInt(10);<br /></li><li>System.out.print(rand); <br /></li><li> System.out.print(" ");<br /></li><li> }<br /></li><li> <br /></li><li> }</li></ol>
ログイン後にコピー
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>public static void main(String[] args) {<br /></li><li>Random r = new Random(10);<br /></li><li>for (int i=0;i<10;i++){<br /></li><li>data = r.nextInt(10);<br /></li><li>System.out.print(rand);<br /></li><li>System.out.print(" ");<br /></li><li>}<br /></li><li>}</li></ol>
ログイン後にコピー
によって生成される 10 個の数字は同じです
rrreee 上記のコードによって生成される 10 個の数字は異なりますが、再度実行すると、生成される 10 個の数字のシーケンスは次のようになります。上記と同じ for ループを複数回実行して生成されるシーケンスは同じです。これは、デフォルトでrandom()によってシードを生成する原理は同じですが、上記をrandom(に置き換えると、 )、forループを複数回実行して生成される乱数は同じになります。実行するたびに時間が異なるため、デフォルトのシードも異なることがわかります。 randan() で乱数を生成することは、真にランダムなシードを持つことです
http://www.bkjia.com/PHPjc/1117248.html
www.bkjia.com
本当http://www.bkjia.com/PHPjc/1117248.html技術記事 Javaのrandom関数についての理解