## Random Long Within Exp Range FunctionRandom 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.
```    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))`