for (int i = 0; i < count; i++)
string fakeID = returnFullLengthID();
Console.WriteLine(fakeID);
private string returnFullLengthID()
DateTime start = new DateTime(1900, 01, 01);
int range = (DateTime.Today - start).Days;
start = start.AddDays(RandomNumber(0, range));
string date = start.ToString("yyMMdd");
string genderCode = RandomNumber(0, 9999).ToString("0000");
string citizenship = RandomNumber(0, 2).ToString();
string raceCode = 8.ToString();
string myString = string.Format("{0}{1}{2}{3}", date, genderCode, citizenship, raceCode);
int digit1 = int.Parse(myString.Substring(0,1));
int digit2 = int.Parse(myString.Substring(1,1)) *2;
digit2 = SplitAndAddNumbersTogether(digit2);
int digit3 = int.Parse(myString.Substring(2,1));
int digit4 = int.Parse(myString.Substring(3,1)) *2;
digit4 = SplitAndAddNumbersTogether(digit4);
int digit5 = int.Parse(myString.Substring(4,1));
int digit6 = int.Parse(myString.Substring(5,1)) *2;
digit6 = SplitAndAddNumbersTogether(digit6);
int digit7 = int.Parse(myString.Substring(6,1));
int digit8 = int.Parse(myString.Substring(7,1)) *2;
digit8 = SplitAndAddNumbersTogether(digit8);
int digit9 = int.Parse(myString.Substring(8,1));
int digit10 = int.Parse(myString.Substring(9,1)) *2;
digit10 = SplitAndAddNumbersTogether(digit10);
int digit11 = int.Parse(myString.Substring(10,1));
int digit12 = int.Parse(myString.Substring(11,1)) *2;
digit12 = SplitAndAddNumbersTogether(digit12);
int total = digit1 + digit2 + digit3 + digit4 + digit5 + digit6 +
digit7 + digit8 + digit9 + digit10 + digit11 + digit12;
int missingDigit = 10 - (total % 10);
return myString + missingDigit.ToString();
private int SplitAndAddNumbersTogether(int digitToCheck)
int digit2 = digitToCheck - 10;
digitToCheck = digit1 + digit2;
private static readonly Random random = new Random();
private static readonly object syncLock = new object();
public static int RandomNumber(int min, int max)
return random.Next(min, max);