Click here to Skip to main content
Click here to Skip to main content

C#: Random Number Guessing Game

, 18 Jun 2014 CPOL
Rate this:
Please Sign up or sign in to vote.
A simple C# program to implement a "Random Number Guessing Game"


This article will give you some tips to write a simple "Random Number Guessing Game" using C#. The program generates a 4 digit random number. For each digit, the number is chosen from 1 to 5 and the number can repeat. You have 5 attempts to guess the random number.

For example, if the random number generated is 5241 and Your Guess is 2143 in the first attempt then the program will display a message "Digit(s) in place 3 correct" indicating that the number entered at position 3 is correct.


    using System;
    using System.Collections.Generic;
    using System.Linq;

    public class Program
        public class Result
            public int Index { get; set; }
            public bool Flag { get; set; }

        static void Main()
            Program game = new Program();

        void Run()
            // initialize the number of attempts
            int numberOfAttempts = 5;

            Console.WriteLine("\nWelcome to Random Number Guessing Game.");
            Console.WriteLine("\n\nGuess the 4 digit random number XXXX.");
            Console.WriteLine("\nFor each digit, the number is chosen from 1 to 5  \nNumbers can repeat.");
            Console.WriteLine(string.Format("\nYou have {0} attempts to win the game.", numberOfAttempts));

            // Call the method to Generate the Random Number
            string randomNumber = GenerateRandomNumber();

            for (int i = 1; i <= numberOfAttempts; i++)
                // Call the method to get the user input
                string userInput = GetUserInput(i);

                // Get the result - Collection containing the result of all 4 digits
                List<Result> result = GetResult(randomNumber, userInput);

                // Guess the count of number of digits that are correct
                int flagCount = result.Where(f => f.Flag == true).Count();

                // Get the place(s)/index of digits that are correct
                string digitsCorrect = string.Join(",", result.Where(f => f.Flag == true)
                    .Select(c => (++c.Index).ToString()));

                // check the flag count and display appropriate message
                if (flagCount == 4)
                    Console.WriteLine("Random Number:{0} , Your Input:{1}", randomNumber, userInput);
                    Console.WriteLine("You guess is correct! Game Won..hurray...:)");
                else if (i == numberOfAttempts)
                    Console.WriteLine("sorry, You missed it! Game Lost..:(");
                    Console.WriteLine("Random Number is {0}", randomNumber);
                    digitsCorrect = flagCount == 0 ? "none" : digitsCorrect;
                    Console.WriteLine(string.Format("Digit(s) in place {0} correct", digitsCorrect));


        public List<Result> GetResult(string randomNumber, string userInput)
            char[] splitRandomNumber = randomNumber.ToCharArray();
            char[] splitUserInput = userInput.ToCharArray();

            List<Result> results = new List<Result>();

            for (int index = 0; index < randomNumber.Length; index++)
                Result result = new Result();
                result.Index = index;
                result.Flag = splitRandomNumber[index] == splitUserInput[index];

            return results;

        public string GetUserInput(int attempt)
            int inputNumber;

            Console.WriteLine(string.Format("\nGuess the number. Attempt:{0}", attempt));
            Console.WriteLine("Input a 4 digit number");

            if (int.TryParse(Console.ReadLine(), out inputNumber)
                && inputNumber.ToString().Length == 4)
                return inputNumber.ToString();
                Console.WriteLine("You have entered a invalid input.");
                return "0000";

        public string GenerateRandomNumber()
            Random random = new Random();
            string number = string.Empty;
            int length = 4;

            for (int i = 0; i < length; i++)
                number += random.Next(1, 6);

            return number;


Happy Coding!!!!



This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Technical Lead
India India

Comments and Discussions

GeneralMy vote of 4 PinmemberKaushal Jain21-Jun-14 23:09 
GeneralMy vote of 5 PinprofessionalVolynsky Alex21-Jun-14 1:18 
GeneralRe: My vote of 5 PinmemberJohn-ph21-Jun-14 1:31 
GeneralRe: My vote of 5 PinprofessionalVolynsky Alex21-Jun-14 1:33 
GeneralI did things like this in the first year of studying programming Pinprofessionalcsakii20-Jun-14 12:21 
GeneralRe: I did things like this in the first year of studying programming PinmemberJohn-ph21-Jun-14 1:23 
QuestionLiked a posting a bit more improved version using StringBuilder, no LINQ etc PinmemberAnandChavali19-Jun-14 1:49 
GeneralRe: Liked a posting a bit more improved version using StringBuilder, no LINQ etc [modified] PinmemberJohn-ph19-Jun-14 2:27 
GeneralRe: Random Number Guessing Game PingroupCodeFrux Technologies18-Jun-14 23:00 
GeneralRe: Random Number Guessing Game PinmemberJohn-ph19-Jun-14 2:27 
BugCode Correction PinmemberYugandhar Lakkaraju18-Jun-14 9:28 
GeneralRe: Code Correction PinmemberDewey18-Jun-14 19:05 
GeneralRe: Code Correction PinmemberJohn-ph19-Jun-14 2:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.150129.1 | Last Updated 18 Jun 2014
Article Copyright 2014 by John-ph
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid