vendredi 6 novembre 2015

How to create a Random Unique number in C# using a Recursive Method?

I'm trying to generate 5 random numbers between 1-10 which do not have duplicate values. Therefore, I've created a recursive method which should check to see if the value created for whichever position in the array has been used already. If it has, then it will create a new random number and check again.

Here's my code:

    static Random randomObject = new Random();

    static void Main(string[] args)
    {

    long[] randomArr = new long[5];


    for (int i = 0; i < randomArr.Length; i++ )
    {
        if (randomArr[i] == randomArr[0])
        {
            randomArr[i] = randomObject.Next(1, 11);
        }
        else 
        {
            long check = randomObject.Next(1, 11);
            randomArr[i] = CheckIfUnique(check, randomArr);
        }
    }

    Console.WriteLine("\nPress the [enter] key to continue...");
    Console.ReadLine();

}

static long CheckIfUnique(long a, long[] b) 
{
    for (int i = 0; i <= b.GetUpperBound(0); i++) 
    {
        if (a == b[i])
        {
           a = randomObject.Next(1, 11);
           CheckIfUnique(a, b);
        }
    }
    return a;
}

But I'm still getting duplicate values. Does anyone know if there is an error in my logic, or if the compiler will crap out after so many recursive steps?




Aucun commentaire:

Enregistrer un commentaire