📄 random.html
字号:
value from this random number generator's sequence. The general contract of <tt>nextLong</tt> is that one long value is pseudorandomly generated and returned. All 2<font size="-1"><sup>64</sup></font> possible <tt>long</tt> values are produced with (approximately) equal probability. The method <tt>nextLong</tt> is implemented by class <tt>Random</tt> as follows: <blockquote><pre> public long nextLong() { return ((long)next(32) << 32) + next(32); }</pre></blockquote><DD><DL></DL></DD><DD><DL><DT><B>Returns:</B><DD>the next pseudorandom, uniformly distributed <code>long</code> value from this random number generator's sequence.</DL></DD></DL><HR><A NAME="nextBoolean()"><!-- --></A><H3>nextBoolean</H3><PRE>public boolean <B>nextBoolean</B>()</PRE><DL><DD>Returns the next pseudorandom, uniformly distributed <code>boolean</code> value from this random number generator's sequence. The general contract of <tt>nextBoolean</tt> is that one <tt>boolean</tt> value is pseudorandomly generated and returned. The values <code>true</code> and <code>false</code> are produced with (approximately) equal probability. The method <tt>nextBoolean</tt> is implemented by class <tt>Random</tt> as follows: <blockquote><pre> public boolean nextBoolean() {return next(1) != 0;} </pre></blockquote><DD><DL></DL></DD><DD><DL><DT><B>Returns:</B><DD>the next pseudorandom, uniformly distributed <code>boolean</code> value from this random number generator's sequence.<DT><B>Since: </B><DD>1.2</DD></DL></DD></DL><HR><A NAME="nextFloat()"><!-- --></A><H3>nextFloat</H3><PRE>public float <B>nextFloat</B>()</PRE><DL><DD>Returns the next pseudorandom, uniformly distributed <code>float</code> value between <code>0.0</code> and <code>1.0</code> from this random number generator's sequence. <p> The general contract of <tt>nextFloat</tt> is that one <tt>float</tt> value, chosen (approximately) uniformly from the range <tt>0.0f</tt> (inclusive) to <tt>1.0f</tt> (exclusive), is pseudorandomly generated and returned. All 2<font size="-1"><sup>24</sup></font> possible <tt>float</tt> values of the form <i>m x </i>2<font size="-1"><sup>-24</sup></font>, where <i>m</i> is a positive integer less than 2<font size="-1"><sup>24</sup> </font>, are produced with (approximately) equal probability. The method <tt>nextFloat</tt> is implemented by class <tt>Random</tt> as follows: <blockquote><pre> public float nextFloat() { return next(24) / ((float)(1 << 24)); }</pre></blockquote> The hedge "approximately" is used in the foregoing description only because the next method is only approximately an unbiased source of independently chosen bits. If it were a perfect source or randomly chosen bits, then the algorithm shown would choose <tt>float</tt> values from the stated range with perfect uniformity.<p> [In early versions of Java, the result was incorrectly calculated as: <blockquote><pre> return next(30) / ((float)(1 << 30));</pre></blockquote> This might seem to be equivalent, if not better, but in fact it introduced a slight nonuniformity because of the bias in the rounding of floating-point numbers: it was slightly more likely that the low-order bit of the significand would be 0 than that it would be 1.]<DD><DL></DL></DD><DD><DL><DT><B>Returns:</B><DD>the next pseudorandom, uniformly distributed <code>float</code> value between <code>0.0</code> and <code>1.0</code> from this random number generator's sequence.</DL></DD></DL><HR><A NAME="nextDouble()"><!-- --></A><H3>nextDouble</H3><PRE>public double <B>nextDouble</B>()</PRE><DL><DD>Returns the next pseudorandom, uniformly distributed <code>double</code> value between <code>0.0</code> and <code>1.0</code> from this random number generator's sequence. <p> The general contract of <tt>nextDouble</tt> is that one <tt>double</tt> value, chosen (approximately) uniformly from the range <tt>0.0d</tt> (inclusive) to <tt>1.0d</tt> (exclusive), is pseudorandomly generated and returned. All 2<font size="-1"><sup>53</sup></font> possible <tt>float</tt> values of the form <i>m x </i>2<font size="-1"><sup>-53</sup> </font>, where <i>m</i> is a positive integer less than 2<font size="-1"><sup>53</sup></font>, are produced with (approximately) equal probability. The method <tt>nextDouble</tt> is implemented by class <tt>Random</tt> as follows: <blockquote><pre> public double nextDouble() { return (((long)next(26) << 27) + next(27)) / (double)(1L << 53); }</pre></blockquote><p> The hedge "approximately" is used in the foregoing description only because the <tt>next</tt> method is only approximately an unbiased source of independently chosen bits. If it were a perfect source or randomly chosen bits, then the algorithm shown would choose <tt>double</tt> values from the stated range with perfect uniformity. <p>[In early versions of Java, the result was incorrectly calculated as: <blockquote><pre> return (((long)next(27) << 27) + next(27)) / (double)(1L << 54);</pre></blockquote> This might seem to be equivalent, if not better, but in fact it introduced a large nonuniformity because of the bias in the rounding of floating-point numbers: it was three times as likely that the low-order bit of the significand would be 0 than that it would be 1! This nonuniformity probably doesn't matter much in practice, but we strive for perfection.]<DD><DL></DL></DD><DD><DL><DT><B>Returns:</B><DD>the next pseudorandom, uniformly distributed <code>double</code> value between <code>0.0</code> and <code>1.0</code> from this random number generator's sequence.</DL></DD></DL><HR><A NAME="nextGaussian()"><!-- --></A><H3>nextGaussian</H3><PRE>public double <B>nextGaussian</B>()</PRE><DL><DD>Returns the next pseudorandom, Gaussian ("normally") distributed <code>double</code> value with mean <code>0.0</code> and standard deviation <code>1.0</code> from this random number generator's sequence. <p> The general contract of <tt>nextGaussian</tt> is that one <tt>double</tt> value, chosen from (approximately) the usual normal distribution with mean <tt>0.0</tt> and standard deviation <tt>1.0</tt>, is pseudorandomly generated and returned. The method <tt>nextGaussian</tt> is implemented by class <tt>Random</tt> as follows: <blockquote><pre> synchronized public double nextGaussian() { if (haveNextNextGaussian) { haveNextNextGaussian = false; return nextNextGaussian; } else { double v1, v2, s; do { v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0 v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0 s = v1 * v1 + v2 * v2; } while (s >= 1 || s == 0); double multiplier = Math.sqrt(-2 * Math.log(s)/s); nextNextGaussian = v2 * multiplier; haveNextNextGaussian = true; return v1 * multiplier; } }</pre></blockquote> This uses the <i>polar method</i> of G. E. P. Box, M. E. Muller, and G. Marsaglia, as described by Donald E. Knuth in <i>The Art of Computer Programming</i>, Volume 2: <i>Seminumerical Algorithms</i>, section 3.4.1, subsection C, algorithm P. Note that it generates two independent values at the cost of only one call to <tt>Math.log</tt> and one call to <tt>Math.sqrt</tt>.<DD><DL></DL></DD><DD><DL><DT><B>Returns:</B><DD>the next pseudorandom, Gaussian ("normally") distributed <code>double</code> value with mean <code>0.0</code> and standard deviation <code>1.0</code> from this random number generator's sequence.</DL></DD></DL><!-- ========= END OF CLASS DATA ========= --><HR><!-- ========== START OF NAVBAR ========== --><A NAME="navbar_bottom"><!-- --></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0"><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_bottom_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3"> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Random.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Std. Ed. v1.3</b></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../java/util/PropertyResourceBundle.html"><B>PREV CLASS</B></A> <A HREF="../../java/util/ResourceBundle.html"><B>NEXT CLASS</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../index.html" TARGET="_top"><B>FRAMES</B></A> <A HREF="Random.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> SUMMARY: INNER | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD></TR></TABLE><!-- =========== END OF NAVBAR =========== --><HR><font size="-1"><a href="http://java.sun.com/cgi-bin/bugreport.cgi">Submit a bug or feature</a><br>For further API reference and developer documentation, see <a href="http://java.sun.com/products/jdk/1.3/devdocs-vs-specs.html">Java 2 SDK SE Developer Documentation</a>. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples. <p>Java, Java 2D, and JDBC are trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road<br>Palo Alto, California, 94303, U.S.A. All Rights Reserved.</font></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -