<-- Previous || Up || Next -->

Random Long Within Exp Range Function
Random Values Class

Public Function RandomLongWithinExpRange( _
      Optional ByVal vLower As Variant _
    , Optional ByVal vUpper As Variant _
    , Optional ByVal vBase As Variant _
    ) As Variant

"Random Long Within Exponential Range"
Returns a random Long (integer) number between vLower and vUpper inclusive.
The randoms are generated with a frequency comparable to the area under an exponential curve, except that more numbers are generated near the bottom of the range instead of near the top of it.

Summary: The function first tries to generate a random number using the definition below. If that calculation causes an Overflow or other type of error, the function will repeat it up to 32 times. Function returns Null if it still cannot generate a random number after 32 attempts.
Examples:
    Rnd(-1) = 0.224007
    RandomLongWithinExpRange(1, Null, 3) = 9518240
    RandomLongWithinExpRange(1, Null, 3) = 285982127
    RandomLongWithinExpRange(1, Null, 3) = 646523244
    RandomLongWithinExpRange(1, 100000, 2) = 814
    RandomLongWithinExpRange(1, 100000, 2) = 82562
    RandomLongWithinExpRange(1, 100000, 2) = 38807
Note: The call to the Visual Basic Rnd function in the above example seeds the Visual Basic random number generator so that the sample results can be reproduced. There is generally no need to call the Rnd function within your programs since Entisoft Tools initializes the Visual Basic random number generator once with "Randomize" statement.
See also:
    RandomLongWithinRange Function
    RandomIntegerWithinExpRange Function
vLower: The lower limit of the range in which the generated random number will fall. vLower defaults to MinLong if it is missing or Null or cannot be fixed up to a number.

vUpper: The upper limit of the range in which the generated random number will fall. vUpper defaults to MaxLong if it is missing or Null or cannot be fixed up to a number.

Function returns Null if vLower > (is greater than) vUpper.

Function returns vLower if vLower = (equals) vUpper.

vBase: See the definition below. vBase defaults to 1 (one) if it is missing or Null or cannot be fixed up to a number. With a vBase of 1 (one), this is the same as calling the RandomDoubleWithinRange function.

General Definition:

    CLng(Int((dblRnd * (1 + vUpper - vLower) ^ (1 / vBase)) ^ vBase + vLower))

Copyright 1996-1999 Entisoft
Entisoft Tools is a trademark of Entisoft.