[AccessD] Create a random date/time
Stuart McLachlan
stuart at lexacorp.com.pg
Fri Aug 28 20:21:50 CDT 2015
Rnd * Rnd is NOT a "trick to create a random date/time".
It is a trick to create "more significant digits" than the Single returned by a Rnd.
Unfortunately it has a VERY bad side effect. Multiplying random numbers together alters the
probablility distribution. http://mathworld.wolfram.com/UniformProductDistribution.html
A better way would be to use Rnd twice in a different way. First to generate the Date part and
a second time to generate the time part, then add then together.
--
Stuart
On 28 Aug 2015 at 15:29, Gustav Brock wrote:
> Hi all
>
> Have you ever wondered how to create a random date/time?
>
> Well I hadn't, but it is not that difficult. The trick is using Rnd
> twice:
>
> RandomDate = CDate((CLng(#12/31/9999#) - CLng(#1/1/100#)) * Rnd *
> Rnd + CLng(#1/1/100#))
>
> The full story is here:
>
> http://stackoverflow.com/a/32265346/3527297
>
> If you want a value within a given range, you can use this simple
> function:
>
> <code>
> Public Function DateRandom( _
> Optional ByVal UpperDate As Date = #12/31/9999#, _
> Optional ByVal LowerDate As Date = #1/1/100#) _
> As Date
>
> ' Generates a random date/time - optionally within the range of
> LowerDate and/or UpperDate. ' ' 2015-08-28. Gustav Brock, Cactus
> Data ApS, CPH.
>
> Dim RandomDate As Date
>
> RandomDate = CDate((CLng(UpperDate) - CLng(LowerDate)) * Rnd * Rnd
> + CLng(LowerDate))
>
> DateRandom = RandomDate
>
> End Function
> </code>
>
> /gustav
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
More information about the AccessD
mailing list