I made a 16 character code generator. It works like a charm now, but I was wondering if there's any way to do it more efficiently. Just bear in mind I am quite new to C#, so don't just make my code more efficient, but explain to me how you do it. public partial class MainWindow : Window { //Globals string[] Letters = new string[27] { "A", "B", "C", "D", "E", "F", "G", "H", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; string[] Numbers = new string[9] { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; Random r = new Random(); int i = 0; int a = 0; private string[] generateCode() { string[] RL = new string[9]; string[] RN = new string[9]; //Random letters while (i < 9) { RL[i] = Letters[r.Next(0, Letters.Length - 1)]; i++; } //Random numbers while (a < 9) { RN[a] = Numbers[r.Next(0, Numbers.Length - 1)]; a++; } TextBox.Text = String.Format("{0}{1}{2}{3}-{4}{5}{6}{7}-{8}{9}{10}{11}-{12}{13}{14}{15}", RN[0], RL[1], RN[1], RL[2], RN[2], RL[3], RN[3], RL[4], RN[4], RL[5], RN[5], RL[6], RN[6], RL[7], RN[7], RL[8], RN[8]); //Resetting the while loop i = 0; a = 0; //Clipboard Clipboard.SetText(TextBox.Text); Message.Content = ("Copied to clipboard!"); return RL; } public MainWindow() { InitializeComponent(); } private void Generate_Click(object sender, RoutedEventArgs e) { generateCode(); }