⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rng.texi

📁 该文件为c++的数学函数库!是一个非常有用的编程工具.它含有各种数学函数,为科学计算、工程应用等程序编写提供方便!
💻 TEXI
📖 第 1 页 / 共 4 页
字号:
generator.@end deffn@deffn {Generator} gsl_rng_random_bsd@deffnx {Generator} gsl_rng_random_libc5@deffnx {Generator} gsl_rng_random_glibc2These generators implement the @code{random()} family of functions, aset of linear feedback shift register generators originally used in BSDUnix.  There are several versions of @code{random()} in use today: theoriginal BSD version (e.g. on SunOS4), a libc5 version (found onolder GNU/Linux systems) and a glibc2 version.  Each version uses adifferent seeding procedure, and thus produces different sequences.The original BSD routines accepted a variable length buffer for thegenerator state, with longer buffers providing higher-qualityrandomness.  The @code{random()} function implemented algorithms forbuffer lengths of 8, 32, 64, 128 and 256 bytes, and the algorithm withthe largest length that would fit into the user-supplied buffer wasused.  To support these algorithms additional generators are availablewith the following names,@examplegsl_rng_random8_bsdgsl_rng_random32_bsdgsl_rng_random64_bsdgsl_rng_random128_bsdgsl_rng_random256_bsd@end example@noindentwhere the numeric suffix indicates the buffer length.  The original BSD@code{random} function used a 128-byte default buffer and so@code{gsl_rng_random_bsd} has been made equivalent to@code{gsl_rng_random128_bsd}.  Corresponding versions of the @code{libc5}and @code{glibc2} generators are also available, with the names@code{gsl_rng_random8_libc5}, @code{gsl_rng_random8_glibc2}, etc.@end deffn@deffn {Generator} gsl_rng_rand48@cindex rand48 random number generatorThis is the Unix @code{rand48} generator.  Its sequence is@tex\beforedisplay$$x_{n+1} = (a x_n + c) \,\hbox{mod}\, m$$\afterdisplay@end tex@ifinfo@examplex_@{n+1@} = (a x_n + c) mod m@end example@end ifinfo@noindentdefined on 48-bit unsigned integers with @math{a = 25214903917}, @math{c = 11} and @c{$m = 2^{48}$} @math{m = 2^48}. The seed specifies the upper 32 bits of the initial value, @math{x_1},with the lower 16 bits set to @code{0x330E}.  The function@code{gsl_rng_get} returns the upper 32 bits from each term of thesequence.  This does not have a direct parallel in the original@code{rand48} functions, but forcing the result to type @code{long int}reproduces the output of @code{mrand48}.  The function@code{gsl_rng_uniform} uses the full 48 bits of internal state to returnthe double precision number @math{x_n/m}, which is equivalent to thefunction @code{drand48}.  Note that some versions of the GNU C Librarycontained a bug in @code{mrand48} function which caused it to producedifferent results (only the lower 16-bits of the return value were set).@end deffn@node Other random number generators@section Other random number generatorsThe generators in this section are provided for compatibility withexisting libraries.  If you are converting an existing program to use GSLthen you can select these generators to check your new implementationagainst the original one, using the same random number generator.  Afterverifying that your new program reproduces the original results you canthen switch to a higher-quality generator.Note that most of the generators in this section are based on singlelinear congruence relations, which are the least sophisticated type ofgenerator.  In particular, linear congruences have poor properties whenused with a non-prime modulus, as several of these routines do (e.g.with a power of two modulus, @c{$2^{31}$}@math{2^31} or @c{$2^{32}$}@math{2^32}).  Thisleads to periodicity in the least significant bits of each number,with only the higher bits having any randomness.  Thus if you want toproduce a random bitstream it is best to avoid using the leastsignificant bits.@deffn {Generator} gsl_rng_ranf@cindex RANF random number generator@cindex CRAY random number generator, RANFThis is the CRAY random number generator @code{RANF}.  Its sequence is@tex\beforedisplay$$x_{n+1} = (a x_n) \,\hbox{mod}\, m$$\afterdisplay@end tex@ifinfo@examplex_@{n+1@} = (a x_n) mod m@end example@end ifinfo@noindentdefined on 48-bit unsigned integers with @math{a = 44485709377909} and@c{$m = 2^{48}$}@math{m = 2^48}.  The seed specifies the lower32 bits of the initial value, @math{x_1}, with the lowest bit set toprevent the seed taking an even value.  The upper 16 bits of @math{x_1}are set to 0. A consequence of this procedure is that the pairs of seeds2 and 3, 4 and 5, etc produce the same sequences.The generator compatibile with the CRAY MATHLIB routine RANF. Itproduces double precision floating point numbers which should beidentical to those from the original RANF.There is a subtlety in the implementation of the seeding.  The initialstate is reversed through one step, by multiplying by the modularinverse of @math{a} mod @math{m}.  This is done for compatibility withthe original CRAY implementation.Note that you can only seed the generator with integers up to@c{$2^{32}$}@math{2^32}, while the original CRAY implementation usesnon-portable wide integers which can cover all @c{$2^{48}$}@math{2^48} states of the generator.The function @code{gsl_rng_get} returns the upper 32 bits from each termof the sequence.  The function @code{gsl_rng_uniform} uses the full 48bits to return the double precision number @math{x_n/m}.The period of this generator is @c{$2^{46}$}@math{2^46}.@end deffn@deffn {Generator} gsl_rng_ranmar@cindex RANMAR random number generatorThis is the RANMAR lagged-fibonacci generator of Marsaglia, Zaman andTsang.  It is a 24-bit generator, originally designed forsingle-precision IEEE floating point numbers.  It was included in theCERNLIB high-energy physics library.@end deffn@deffn {Generator} gsl_rng_r250@cindex shift-register random number generator@cindex R250 shift-register random number generatorThis is the shift-register generator of Kirkpatrick and Stoll.  Thesequence is@tex\beforedisplay$$ x_n = x_{n-103} \oplus x_{n-250}$$\afterdisplay@end tex@ifinfo@examplex_n = x_@{n-103@} ^^ x_@{n-250@}@end example@end ifinfo@noindentwhere @c{$\oplus$}@math{^^} denote ``exclusive-or'', defined on32-bit words.  The period of this generator is about @c{$2^{250}$}@math{2^250} and ituses 250 words of state per generator.For more information see,@itemize @asis@itemS. Kirkpatrick and E. Stoll, "A very fast shift-register sequence randomnumber generator", @cite{Journal of Computational Physics}, 40, 517-526(1981)@end itemize@end deffn@deffn {Generator} gsl_rng_tt800@cindex TT800 random number generatorThis is an earlier version of the twisted generalized feedbackshift-register generator, and has been superseded by the development ofMT19937.  However, it is still an acceptable generator in its ownright.  It has a period of @c{$2^{800}$}@math{2^800} and uses 33 words of storageper generator.For more information see,@itemize @asis@itemMakoto Matsumoto and Yoshiharu Kurita, "Twisted GFSR GeneratorsII", @cite{ACM Transactions on Modelling and Computer Simulation},Vol. 4, No. 3, 1994, pages 254-266.@end itemize@end deffn@comment The following generators are included only for historical reasons, so@comment that you can reproduce results from old programs which might have used@comment them.  These generators should not be used for real simulations since@comment they have poor statistical properties by modern standards.@deffn {Generator} gsl_rng_vax@cindex VAX random number generatorThis is the VAX generator @code{MTH$RANDOM}.  Its sequence is,@tex\beforedisplay$$x_{n+1} = (a x_n + c) \,\hbox{mod}\, m$$\afterdisplay@end tex@ifinfo@examplex_@{n+1@} = (a x_n + c) mod m@end example@end ifinfo@noindentwith @math{a = 69069}, @math{c = 1} and @c{$m = 2^{32}$}@math{m = 2^32}.  The seed specifies the initial value, @math{x_1}.  Theperiod of this generator is @c{$2^{32}$}@math{2^32} and it uses 1 word of storage pergenerator.@end deffn@deffn {Generator} gsl_rng_transputerThis is the random number generator from the INMOS TransputerDevelopment system.  Its sequence is,@tex\beforedisplay$$x_{n+1} = (a x_n) \,\hbox{mod}\, m$$\afterdisplay@end tex@ifinfo@examplex_@{n+1@} = (a x_n) mod m@end example@end ifinfo@noindentwith @math{a = 1664525} and @c{$m = 2^{32}$}@math{m = 2^32}.The seed specifies the initial value, @c{$x_1$}@math{x_1}.@end deffn@deffn {Generator} gsl_rng_randu@cindex RANDU random number generatorThis is the IBM @code{RANDU} generator.  Its sequence is@tex\beforedisplay$$x_{n+1} = (a x_n) \,\hbox{mod}\, m$$\afterdisplay@end tex@ifinfo@examplex_@{n+1@} = (a x_n) mod m@end example@end ifinfo@noindentwith @math{a = 65539} and @c{$m = 2^{31}$}@math{m = 2^31}.  Theseed specifies the initial value, @math{x_1}.  The period of thisgenerator was only @c{$2^{29}$}@math{2^29}.  It has become a textbook example of apoor generator.@end deffn@deffn {Generator} gsl_rng_minstd@cindex RANMAR random number generatorThis is Park and Miller's "minimal standard" @sc{minstd} generator, asimple linear congruence which takes care to avoid the major pitfalls ofsuch algorithms.  Its sequence is,@tex\beforedisplay$$x_{n+1} = (a x_n) \,\hbox{mod}\, m$$\afterdisplay@end tex@ifinfo@examplex_@{n+1@} = (a x_n) mod m@end example@end ifinfo@noindentwith @math{a = 16807} and @c{$m = 2^{31} - 1 = 2147483647$}@math{m = 2^31 - 1 = 2147483647}. The seed specifies the initial value, @c{$x_1$}@math{x_1}.  The period of thisgenerator is about @c{$2^{31}$}@math{2^31}.This generator is used in the IMSL Library (subroutine RNUN) and inMATLAB (the RAND function).  It is also sometimes known by the acronym"GGL" (I'm not sure what that stands for).For more information see,@itemize @asis@itemPark and Miller, "Random Number Generators: Good ones are hard to find",@cite{Communications of the ACM}, October 1988, Volume 31, No 10, pages1192-1201.@end itemize@end deffn@deffn {Generator} gsl_rng_uni@deffnx {Generator} gsl_rng_uni32This is a reimplementation of the 16-bit SLATEC random number generatorRUNIF. A generalization of the generator to 32 bits is provided by@code{gsl_rng_uni32}.  The original source code is available from NETLIB.@end deffn@deffn {Generator} gsl_rng_slatecThis is the SLATEC random number generator RAND. It is ancient.  Theoriginal source code is available from NETLIB.@end deffn@deffn {Generator} gsl_rng_zufThis is the ZUFALL lagged Fibonacci series generator of Peterson.  Itssequence is,@tex\beforedisplay$$ \eqalign{t &= u_{n-273} + u_{n-607} \cru_n  &= t - \hbox{floor}(t)}$$\afterdisplay@end tex@ifinfo@examplet = u_@{n-273@} + u_@{n-607@}u_n  = t - floor(t)@end example@end ifinfoThe original source code is available from NETLIB.  For more information

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -