From: "Earl F. Glynn" Subject: Re: Delphi's Random Number Generator Date: Friday, October 06, 2000 8:50 AM John: > We are using Borland's Random Number Generator for Statistical > Sampling. Our Auditors need to know about the > Random number formula the Random Procedure uses to generate > random numbers. Can you tell us the name of the formula used, > and what the formula is? The Random function uses "compiler magic" to decide whether it returns an integer or floating-point extended result. For an integer result, _RandInt in System.PAS is called. For an extended result, _RandExt in System.PAS is called. Here are the assembly language routines from System.PAS: procedure _RandInt; asm { ->EAX Range } { <-EAX Result } IMUL EDX,RandSeed,08088405H INC EDX MOV RandSeed,EDX MUL EDX MOV EAX,EDX end; procedure _RandExt; const two2neg32: double = ((1.0/$10000) / $10000); // 2^-32 asm { FUNCTION _RandExt: Extended; } IMUL EDX,RandSeed,08088405H INC EDX MOV RandSeed,EDX FLD two2neg32 PUSH 0 PUSH EDX FILD qword ptr [ESP] ADD ESP,8 FMULP ST(1), ST(0) end; RandSeed can be set directly or through a call to Randomize. In Ray Lishner's "Delphi in a NutShell" he says: "Delphi uses a pseudorandom number generator (PRNG) with a cycle of 2^32. Although adequate for simple simulations, it is not suitable for use in encrption or other areas where you need a high-quality PRNG." I don't know whether your auditors will like that statement or not. For alternative random number generators, try: - Fast BASM implementation of the "Mother-of-all Pseudo Random Number Generators" as proposed by well-known random number guru, Dr. George Marsaglia of the Department of Statistics, Florida State University. Freeware with source code. www.mindspring.com/~efd/tools.htm (Perhaps your auditors would like a Florida professor's work!) Ultimate Random Number Suite http://www.engineeringobjects.com/URNS.htm I keep info about Random number generators in Delphi in the Probability and Links sections of this page: http://www.efg2.com/Lab/Library/Delphi/MathFunctions/StatisticsAndProbability.htm