public static void Main()
string randomDateOfBirth = GetRandomDate(fromDate: new DateTime(1950, 1, 1), toDate: new DateTime(2021, 1, 1)).ToString("ddMMyy");
string randomNumberSequence;
bool female = NextBoolean();
randomNumberSequence = GenerateRandomCPRNumberSequence(onlyRandomEvenNumbers: true);
randomNumberSequence = GenerateRandomCPRNumberSequence(onlyRandomEvenNumbers: false);
Console.WriteLine(randomDateOfBirth + randomNumberSequence);
public static DateTime GetRandomDate(DateTime fromDate, DateTime toDate)
var range = toDate - fromDate;
var randomTimeSpan = new TimeSpan((long)(new Random(Guid.NewGuid().GetHashCode()).NextDouble() * range.Ticks));
return fromDate + randomTimeSpan;
private static string GenerateRandomCPRNumberSequence(bool onlyRandomEvenNumbers)
if (onlyRandomEvenNumbers)
newRandomNumber = GenerateRandomNumber();
while (newRandomNumber % 2 != 0);
newRandomNumber = GenerateRandomNumber();
while (newRandomNumber % 2 == 0);
if (newRandomNumber < 100)
return $"000{newRandomNumber}";
else if (newRandomNumber > 99 && newRandomNumber < 1000)
return $"00{newRandomNumber}";
return newRandomNumber.ToString();
private static int GenerateRandomNumber(int min = 1, int max = 9999)
return new Random(Guid.NewGuid().GetHashCode()).Next(min, max);
public static bool NextBoolean()
return new Random(Guid.NewGuid().GetHashCode()).Next() > (int.MaxValue / 2);