using System.Collections.Generic;
public static void Main()
Console.Write(Character.GenerateCharacter().GetDebugString());
private Ethnicity ethnicity;
public Character(string n, Gender g, Ethnicity e, Age a)
private static Ethnicity RandomEthnicity(System.Random rand)
return (Ethnicity)rand.Next(0, 4);
private static Age RandomAge(System.Random rand)
return (Age)rand.Next(0, 3);
public static Character GenerateCharacter()
System.Random rand = new System.Random();
Gender g = rand.Next(0, 2) == 0 ? Gender.Male : Gender.Female;
Ethnicity e = RandomEthnicity(rand);
string name = CharacterNames.RandomName(g, e, rand);
return new Character(name, g, e, a);
public string GetDebugString()
return name + ": " + gender + ", " + ethnicity + ", " + age;
public static class CharacterNames
private static readonly string[] caucasianMaleNames = new string[]
"Aaron", "Absolom", "Abraham", "Adam", "Adrian", "Brian", "Jimmy", "Grant", "Willie", "Devin", "Joey", "Geoffrey", "Bryant",
"Peter", "Theodore", "Gerard", "Bob", "Rober", "Thomas", "Victor", "Dave", "Everett", "Dewey", "Doug", "Trevor", "Paul", "Joel",
"Sylvester", "Salvador", "Bennie", "Shaun", "Cliff", "Gene", "Arthur", "Wendell", "Percy", "Andrew", "Jeff", "Ray", "Byron",
"Garrett", "Walter", "Jimmie", "Jeremy", "Earl", "Cameron", "Corey", "Lewis", "Sam", "Floyd", "Chester", "Jamie", "Leo", "Luther",
"Forrest", "Phillip", "Cedric", "Luke", "Grady", "Tyrone", "Maurice", "Chris", "Alvin", "Milton", "Gary", "Roger", "", "John",
"Willard", "Eric", "Frank", "Derek", "Andy", "Kenneth", "Ken", "Ron", "Lee", "Carl", "Dominic", "Caleb", "Darryl", "Steve",
"Gabriel", "Gabe", "Alex", "Marlon", "Levi", "Clayton", "James", "Kent", "Randolph", "Troy", "Greg", "Gregory", "Jeremiah",
"Irving", "Albert", "Marcus", "Roland", "Jack", "Ellis", "Roosevelt", "Samuel", "Joe", "Malcolm", "Shane", "Devin", "Amos",
"Caesar", "Stuart", "Dave", "Israel", "Jerry", "Jefferey", "Brandon", "Tom", "Danny", "Daniel", "Eugene", "Wilbur", "Leonard",
"Clarence", "Nicholas", "Taylor", "Don", "Donald", "Lyle", "Randolph", "Wilfred", "Gilbert", "Douglas", "Doug", "Earl", "Jerry",
"Jesse", "Roger", "Anthony", "Craig", "Alan", "Peter", "James", "Sean", "Billy", "Randy", "Raymond", "Martin", "Kenneth", "George",
"Foster", "Patrick", "Pat", "Will", "Terry", "Alan", "Scott", "Carlton", "Brian", "Richard", "Rick", "Howard", "Fred", "Drake",
"Lance", "Jackson", "Jace", "Joel", "Trenton", "Roan", "Trenton", "Trent", "Marvin", "Mitch", "Oscar", "Otto", "Nelson", "Nate",
"Bert", "Ernie", "Hugh", "Logan", "Clark", "Spencer", "Lawrence", "Henry", "Al", "Kirk", "Harrison", "Gene", "Bruce", "Dustin",
"Heath", "Chad", "Jeff", "Robin", "Ian", "Russell", "Brad", "Kevin", "Clint", "Melvin", "Alec", "Harvey", "Drew", "Reese", "Landon",
"Colin", "Jarod", "Errol", "Orson", "Bradley", "Kurt", "Cliff", "Willem", "Harvey", "Cooper", "Cameron", "Rex", "Dakota", "Ray",
"Victor", "Martin", "Tim", "Timothy", "Ethan", "Elliott", "Simon", "Isaiah", "Tyler", "Eli", "Nolan", "Owen", "Colton", "Wesley",
"Seth", "Malcolm", "Wayne", "Curtis", "Marcus", "Jordan", "Gale"
private static readonly string[] caucasianFemaleNames = new string[]
"Mary", "Anna", "Bethany", "Thelma", "Alexandra", "Ruth", "Leona", "Bernadette", "Erica", "Wanda", "Shannon", "Michelle",
"Laverne", "Katherine", "Cathy", "Maddy", "Bonnie", "Desiree", "Erma", "May", "Jill", "Sheryl", "Jasmine", "Joan", "Dawn",
"Jennie", "Jennifer", "Camille", "Donna", "Rosemary", "Sophia", "Darla", "Arlene", "Lorelai", "Lori", "Bethany", "Janice",
"Karen", "Mandy", "Madeline", "Anne", "Winifred", "Sonia", "Maggie", "Martha", "Jessie", "Mercedes", "Claudia", "Faye",
"Janie", "Essie", "Maryanne", "Kathryn", "Eva", "Ava", "Carol", "Theresa", "Brandi", "Charlotte", "Margaret", "Valerie",
"Adrienne", "Kelly", "Betty", "Doris", "Vicki", "Elena", "Patty", "Shelley", "Alyssa", "Diana", "Barbara", "Lisa", "Meredith",
"Susie", "Alexis", "Misty", "Annette", "Tiffany", "Rachel", "Dianna", "Kristi", "Tamara", "Audrey", "Christina", "Regina",
"Eileen", "Sheila", "Krista", "Opal", "Naomi", "Rosie", "Joanne", "Sharon", "Terry", "Kerry", "Judy", "Helen", "Renee", "Viola",
"Shawna", "Carolyn", "Amber", "Samantha", "Sam", "Jill", "Ellen", "Julia", "Mabel", "Laura", "Ginger", "Autumn", "Myra", "Tina",
"Amber", "Leah", "Marsha", "Connie", "Lena", "Felicia", "Candace", "Mindy", "Faith", "Marion", "Meryl", "Sidney", "Ingrid",
"Liz", "Kate", "Violet", "Viola", "Vivian", "Diane", "Julia", "Jodie", "Judy", "Morgan", "Grace", "Angela", "Greta", "Olivia",
"Julie", "Isabel", "Izzie", "Rita", "Natalie", "Susan", "Gina", "Joan", "Julianne", "Angie", "Jane", "Liv", "Sandra", "Deborah",
"Emma", "Michelle", "Faye", "Penelope", "Nicole", "Amy", "Sally", "Doris", "Holly", "Hillary", "Jessica", "Jess", "Gloria",
"Sylvia", "Lauren", "Lucy", "Norma", "Kim", "Kimberley", "Donna", "Lisa", "Angelina", "Gwen", "Marion", "Juliet", "Patricia",
"Lena", "Toni", "Chloe", "Emily", "Keira", "Scarlet", "Carey", "Kristyn", "Crystal", "Jamie", "Zoey", "Eliza", "Elliott",
"Angela", "Loretta", "Janet", "Molly", "Claire", "Jada", "Sasha", "Trinity", "Jasmine", "Paige", "Jordan", "Tessa", "Naomi",
"Crystal", "Jasmine", "Brianna", "Cassandra", "Haley", "Irene", "Linda", "Priscilla"
private static readonly string[] blackMaleNames = new string[]
"Jamal", "Kareem", "Tyreese", "Lamont", "Marion", "Morgan", "Sidney", "Lindsey", "Hakeem", "Damien", "Jamari", "Deonte", "Kadeem",
"Leslie", "Stacey", "Marlon", "Omar", "Andre", "Elijah", "Tyrell", "Laramie", "Tyrone", "Malik", "Dante"
private static readonly string[] blackFemaleNames = new string[]
"Deidra", "Jaylen", "Zora", "Keisha", "Raven", "Aliyah", "Precious", "Nia", "Diamond", "Kiara", "Destiny", "Layla", "Aniyah",
"Kennedy", "Mandisa", "Shaquana", "Devyn", "Monique", "Jemima", "Mariam", "Yasmine", "Latisha", "Ashanti"
private static readonly string[] hispanicMaleNames = new string[]
"Jose", "Juan", "Miguel", "Luis", "Francisco", "Antonio", "Alejandro", "Pedro", "Manuel", "Ricardo", "Daniel", "Fernando",
"Jorge", "Roberto", "Carlos", "Javier", "Eduardo", "Angel", "Marco", "Raul", "Arturo", "David", "Gerardo", "Sebastian",
"Santiago", "Matias", "Mateo", "Nicolas", "Diego", "Samuel", "Benjamin", "Joaquin", "Lucas", "Tomas", "Emiliano", "Rodrigo",
"Ignacio", "Emilio", "Bruno", "Santino", "Luciano", "Franco", "Sergio", "Cristobal", "Josue", "Hugo", "Lorenzo", "Alvaro",
"Esteban", "Jacobo", "Camilo", "Elias", "Benicio", "Antonio", "Rico", "Rodolfo", "Abel"
private static readonly string[] hispanicFemaleNames = new string[]
"Maria", "Juana", "Margarita", "Veronica", "Alejandra", "Leticia", "Elena", "Gabriela", "Patricia", "Josefina", "Rosa",
"Alicia", "Teresa", "Yolanda", "Ana", "Gloria", "Sofia", "Isabella", "Camila", "Valentina", "Mariana", "Daniela", "Martina",
"Lucia", "Catalina", "Mia", "Natalia", "Paula", "Juana", "Bianca", "Guadalupe", "Abril", "Florencia", "Carolina", "Regina",
"Alma", "Violeta", "Juliana", "Isabel", "Fatima", "Silvana", "Clara", "Camila", "Romina", "Malena", "Luana", "Ariadna", "Josefa",
"Raquel", "Salma", "America", "Lupe", "Rosario", "Penelope", "Selena", "Dolores", "Olga", "Carmen", "Silvana"
private static readonly string[] asianMaleNames = new string[]
"Shun", "Takeru", "Tomohisa", "Toma", "Ken", "Sota", "Takuya", "Kento", "Teppei", "Kanata", "Tatsuya", "Jun", "Haruma", "Masaki",
"Kazuya", "Ryuhei", "Tadanobu", "Ryo", "Jin", "Kazunari", "Eita", "Satoshi", "Masaki", "Kenichi", "Tsuyoshi", "Teruyuki", "Sho",
"Hiroyuki", "Hiroshi", "Yudai", "Eiji", "Kentaro", "Yuto", "Taishi", "Hiro", "Yuya", "Takeshi", "Masahiro", "Takayuki", "Toshiro",
"Haru", "Akio", "Masanobu", "Sadao", "Toru", "Seizo", "Arata", "Isao", "Mitsuru", "Bo-hyun", "Do-gyu", "Dong-goo", "Gil-kang",
"Jae-hong", "Jae-hwan", "Jae-hyo", "Jae-mo", "Jae-wook", "Ji-ho", "Ji-hwan", "Nae-sang", "Se-ha", "Seung-gyun", "Suk-hwan", "Sung-ki",
"Woo-yeon", "Yong-joon", "Jong-deok", "Ki-sung", "Soo-bin", "Wei", "Fang", "Na", "Yichen", "Haoyu", "Yuchen", "Zimo", "Yuhang",
"Haoran", "Zihao", "Yichen", "Bingwen", "Bo", "Bohai", "Bao", "Bojing", "Bolin", "Changming", "Changpu", "Fai", "Enlai", "Gui", "Hai",
"Hong", "Huan", "Huojin", "Jian", "Ling", "Longwei"
private static readonly string[] asianFemaleNames = new string[]
"Yinuo", "Zihan", "Kexin", "Yuxi", "Yutong", "Mengyao", "Ai", "Bao", "BaozhaiAn", "Biyu", "Changchang", "Changying", "Chenguang",
"Chunhua", "Daiyu", "Dandan", "Ehuang", "Fang", "Genji", "Hua", "Hong", "Huifang", "Jia", "Jiao", "JingLanying", "Lee", "Liling",
"Luli", "Meifeng", "Meiying", "Mingmei", "Mingyu", "Nuwa", "Ninghong", "Shuang", "Yui", "Kyoko", "Suzu", "Kasumi", "Haruka", "Yu",
"Satomi", "Rinko", "Maki", "Koyuki", "Kanna", "Emi", "Mao", "Masami", "Fumi", "Haruna", "Yuko", "Chiaki", "Ayame", "Hikari", "Aya",
"Nozomi", "Minami", "Nana", "Tao", "Yuriko", "Youki", "Sayaka", "Tsubasa", "Mikako", "Mina", "Takako", "Ayami", "Ryoko", "Arai",
"Mie", "Saki", "Ayumi", "Ko", "Suzuka", "Ji-hyun", "Ye-jin", "Shin-hye", "Min-youngTae-hee", "Ji-won", "Hyo-jin", "Bo-young", "Ji-woo",
"Yoo-jung", "Hyo-joo", "Sun-kyung", "So-hyun", "Ji-hyo", "Ji-won", "Hye-sun", "Chae-won", "Yoon-ah", "Ji-min", "Na-ra", "So-min",
"Se-kyung", "Bo-young", "Hee-sun", "Ga-in"
public static string RandomName(Character.Gender gender, Character.Ethnicity e, System.Random rand)
string[] arrayToUse = caucasianMaleNames;
if (gender == Character.Gender.Male)
if (e == Character.Ethnicity.Black && rand.Next(0, 100) < 20)
arrayToUse = blackMaleNames;
if (e == Character.Ethnicity.Hispanic && rand.Next(0, 100) < 70)
arrayToUse = hispanicMaleNames;
if (e == Character.Ethnicity.Asian && rand.Next(0, 100) < 50)
arrayToUse = asianMaleNames;
arrayToUse = caucasianFemaleNames;
if (e == Character.Ethnicity.Black && rand.Next(0, 100) < 20)
arrayToUse = blackFemaleNames;
if (e == Character.Ethnicity.Hispanic && rand.Next(0, 100) < 70)
arrayToUse = hispanicFemaleNames;
if (e == Character.Ethnicity.Asian && rand.Next(0, 100) < 50)
arrayToUse = asianFemaleNames;
return arrayToUse[rand.Next(0, arrayToUse.Length)];