/// <summary> /// Create Random Number /// </summary> /// <param name="minimumValue">Minimum Value</param> /// <param name="maximumValue">Maximum Number</param> /// <returns>Random Integer</returns> public static long CreateRandomNumber(long minimumValue = MinimumNumber, long maximumValue = MaximumNumber) { var randomNextValue = ThreadLocalRandom.NextDouble(); var randomRange = maximumValue - minimumValue + 1; return(minimumValue + (long)(randomRange * randomNextValue)); }
/// <summary> /// Create Random Date /// </summary> /// <param name="dateKind">Kind of Date</param> /// <param name="minDate">Minimum Date (Optional)</param> /// <param name="maxDate">Maximum Date (Optional)</param> /// <param name="dateOnly">Date Only and not Time</param> /// <param name="minTime">Minimum Time (Optional)</param> /// <param name="maxTime">Maximum Time (Optional)</param> /// <returns>Random created date</returns> public static DateTime CreateRandomDate(DateTimeKind dateKind, DateTime?minDate = null, DateTime?maxDate = null, bool dateOnly = false, DateTime?minTime = null, DateTime?maxTime = null) { if (dateOnly) { minDate = minDate?.StartOfDay().AddDays(1); maxDate = maxDate?.StartOfDay(); } var minTicks = (minDate ?? new DateTime(1990, 1, 1)).Ticks; var maxTicks = (maxDate ?? new DateTime(2020, 12, 31)).Ticks; var range = maxTicks - minTicks; var actualTicks = minTicks + (range + ThreadLocalRandom.NextDouble()); var rawDateTime = new DateTime((long)actualTicks); var sanitised = new DateTime(rawDateTime.Year, rawDateTime.Month, rawDateTime.Day, rawDateTime.Hour, rawDateTime.Minute, rawDateTime.Second, rawDateTime.Millisecond, dateKind); return(RangeCheckTimeOnRandomDate(minTime, maxTime, dateOnly ? sanitised.StartOfDay() : sanitised)); }