Article ID: 231847 - Last Review: June 24, 2004 - Revision: 3.0 INFO: How Visual Basic Generates Pseudo-Random Numbers for the RND Function
This article was previously published under Q231847 SUMMARY
The RND function in Visual Basic generates pseudo-random numbers according to a specific algorithm. For certain scientific or statistical studies it might be important to understand how these numbers are generated. This article documents the algorithm used. A full treatise on the statistical nature of this algorithm is beyond the scope of this article but the topic is widely discussed in the scientific literature. MORE INFORMATION
Microsoft Visual Basic uses the linear-congruential method for pseudo-random number generation in the RND function. The following pseudo code documents the algorithm used:
x1 = new value x0 = previous value (an initial value of 327680 is used by Visual Basic) a = 1140671485 c = 12820163 The 'MOD' operator in the formula above returns the integer remainder after an integer division. The expression x1/(2^24) will then return the floating-point number between 0.0 and 1.0 that is returned by the RND function. Note that the above algorithm cannot be implemented in Visual Basic code in such a way that the random number sequence generated by the RND function can be reproduced. This is because internally Visual Basic uses an unsigned long data type that is not supported by the Visual Basic language. The following C/C++ code can be used to generate the first ten pseudo-random numbers that Visual Basic generates: It is important to recognize that Rnd() returns a new sequence for each component in which it is used; that is, if your main EXE generates one sequence and uses a Visual Basic ActiveX DLL to generate a sequence also, these sequences are independent of one another. REFERENCES
For additional information about how earlier versions of Microsoft Basic generate pseudo-random numbers, please click the article number below
to view the article in the Microsoft Knowledge Base:
28150
(http://support.microsoft.com/kb/28150/EN-US/
)
RND and RANDOMIZE Alternatives for Generating Random Numbers
Various numerical algorithms for generating pseudo-random number sequences can be found on the Internet and in published texts concerning numerical algorithms.
APPLIES TO
| Other Resources Other Support Sites
CommunityGet Help NowArticle Translations |

















Back to the top
