Manish Tewatia

Manish Tewatia

  • Admin
  • 80.2k
  • 3.2m

I want to generate random numbers but my code does not work properly.

Sep 28 2010 7:40 AM
using System;

class testrandom
{
    public static void Main(string[] args)
    {
        int intno;
        if (args.Length == 0)
        {
            Console.WriteLine("Please enter a parameter eg. unique 5");
            return;
        }
        else
        {
            intno = Int32.Parse(args[0]);
            if (intno < 1)
            {
                // Check to see if user has entered value >= 1
                // because my LowerBound is hardcoded to 1
                Console.WriteLine("Enter value greater than or equal to 1");
                return;
            }
        }
        unique_random generateit = new unique_random();
        generateit.create_random(intno);
    }
}

class unique_random
{
    public void create_random(int passed_intno)
    {
        int LowerBound = 1;
        int UpperBound = passed_intno;
        bool firsttime = true;
        int starti = 0;
        int[] vararray;
        vararray = new int[UpperBound];

        // Random Class used here
        Random randomGenerator = new Random(DateTime.Now.Millisecond);

        do
        {
            int nogenerated = randomGenerator.Next(LowerBound, UpperBound + 1);
            // Note: randomGenerator.Next generates no. to UpperBound - 1 hence +1
            //  i got stuck at this pt & had to use the debugger.

            if (firsttime) // if (firsttime == true)
            {
                vararray[starti] = nogenerated;

                // we simply store the nogenerated in vararray
                firsttime = false;
                starti++;
            }
            else // if (firsttime == false)
            {
                bool duplicate_flag = CheckDuplicate(nogenerated, starti, vararray);
                // call to check in array
                if (!duplicate_flag) // duplicate_flag == false
                {
                    vararray[starti] = nogenerated;
                    starti++;
                }
            }
        } while (starti < UpperBound);

        PrintArray(vararray); // Print the array
    }

    public bool CheckDuplicate(int newrandomNum, int loopcount, int[] function_array)
    {
        bool temp_duplicate = false;

        for (int j = 0; j < loopcount; j++)
        {
            if (function_array[j] == newrandomNum)
            {
                temp_duplicate = true;
                break;
            }
        }
        return temp_duplicate;
    }

    // Print Array
    public static void PrintArray(Array arr)
    {
        Console.Write("{");
        int count = 0;
        int li = arr.Length;

        foreach (object o in arr)
        {
            Console.Write("{0}", o);
            count++;

            //Condition to check whether ',' should be added in printing arrray
            if (count < li)
                Console.Write(", ");
        }
        Console.WriteLine("}");
    }
}

Answers (2)