Click here to Skip to main content
15,890,579 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i have this code which displays random number of 5 different ranges. when code is executed it displays this

B I N G O
1 11 30 35 45
5 15 25 38 50
3 20 22 31 52

Now i want to put a star(*) or null in the middle row.
something like this:
B I N G O
1 11 30 35 45
5 15 NULL 38 50
3 20 22 31 52.
CAN ANYONE HELP?

What I have tried:

Random rand = new Random();
           HashSet<int> number1 = new HashSet<int>();
           HashSet<int> number2 = new HashSet<int>();
           HashSet<int> number3 = new HashSet<int>();
           HashSet<int> number4 = new HashSet<int>();
           HashSet<int> number5 = new HashSet<int>();
           int range1;
           int range2;
           int range3;
           int range4;
           int range5;
           Console.WriteLine("B  I   N   G   O");
           for (int i = 0; i <= 10; i++)
           {
               do
               {

                   range1 = rand.Next(0, 10);

               } while (number1.Contains(range1));
               number1.Add(range1);


               do
               {
                   range2 = rand.Next(11,21);
               } while (number2.Contains(range2));
               number2.Add(range2);

               do
               {
                   range3 = rand.Next(22,32);
               } while (number3.Contains(range3));

               number3.Add(range3);
               do
               {
                   range4 = rand.Next(33,43);
               } while (number3.Contains(range4));
               number4.Add(range4);

               do
               {
                   range5 = rand.Next(44, 54);
               } while (number5.Contains(range5));
               number5.Add(range5);

               Console.WriteLine("{0}  {1}  {2}  {3}  {4}",range1, range2,range3, range4, range5);
           }
           Console.ReadLine();
       }
Posted
Updated 18-Jul-17 7:45am
Comments
BillWoodruff 18-Jul-17 17:23pm    
Why don't you generate two random indexes, one for the row, one for the column, and, in your print loop, test for those indexes being current and insert "null" there ?
RickZeeland 19-Jul-17 8:55am    
Did you downvote my last solution ? if so I would like to know why.

Here is a more efficient solution:
C#
Random rand = new Random();
List<int> list1 = new List<int> {0,1,2,3,4,5,6,7,8,9,10};
List<int> list2 = new List<int> {11,12,13,14,15,16,17,18,19,20,21};
List<int> list3 = new List<int> {22,23,24,25,26,27,28,29,30,31,32};
List<int> list4 = new List<int> {33,34,35,36,37,38,39,40,41,42,43};
List<int> list5 = new List<int> {44,45,46,47,48,49,50,51,52,53,54};

Console.WriteLine("B  I   N   G   O");

for (int i = 0; i <= 10; i++)
{
	string range3string;
	
	// Console.WriteLine("count = " + list1.Count);
	var r = rand.Next(0, list1.Count);
	int range1 = list1[r];
	list1.RemoveAt(r);
   
	r = rand.Next(0, list2.Count);
	int range2 = list2[r];
	list2.RemoveAt(r);
   
	r = rand.Next(0, list3.Count);
	int range3 = list3[r];
	list3.RemoveAt(r);
   
	r = rand.Next(0, list4.Count);
	int range4 = list4[r];
	list4.RemoveAt(r);
   
	r = rand.Next(0, list5.Count);
	int range5 = list5[r];
	list5.RemoveAt(r);
	
	if (i == 5)
		range3string = "NULL";
	else
		range3string = range3.ToString();

	Console.WriteLine("{0}  {1}  {2}  {3}  {4}",range1, range2, range3string, range4, range5);
}

Console.ReadLine();
 
Share this answer
 
Comments
BillWoodruff 18-Jul-17 17:49pm    
If you are correcting, or improving, your first answer, there is no need to post a second answer.
Be careful
C#
} while (number3.Contains(range4));
 
Share this answer
 
v2
You could use a string variable for range3, e.g. range3string:
C#
string range3string;

if (<your condition>)
  range3string = range3;
else
  range3string = "NULL";

To be more specific:
C#
Random rand = new Random();
            HashSet<int> number1 = new HashSet<int>();
            HashSet<int> number2 = new HashSet<int>();
            HashSet<int> number3 = new HashSet<int>();
            HashSet<int> number4 = new HashSet<int>();
            HashSet<int> number5 = new HashSet<int>();
            int range1;
            int range2;
            int range3;
            int range4;
            int range5;
            string range3string;

            Console.WriteLine("B  I   N   G   O");

            for (int i = 0; i <= 10; i++)
            {
                do
                {
                    
                    range1 = rand.Next(0, 10);
 
                } while (number1.Contains(range1));
                number1.Add(range1);
               
                do
                {
                    range2 = rand.Next(11,21);
                } while (number2.Contains(range2));
                number2.Add(range2);
 
                do
                {
                    range3 = rand.Next(22,32);
                } while (number3.Contains(range3));
                number3.Add(range3);

                do
                {
                    range4 = rand.Next(33,43);
                } while (number4.Contains(range4));
                number4.Add(range4);
 
                do
                {
                    range5 = rand.Next(44, 54);
                } while (number5.Contains(range5));
                number5.Add(range5);
 
                if (i == 5)
                  range3string = "NULL";
                else
                  range3string = range3.ToString();

                Console.WriteLine("{0}  {1}  {2}  {3}  {4}",range1, range2, range3string, range4, range5);
            }
            Console.ReadLine();
        }
 
Share this answer
 
v3
Comments
Member 13284925 18-Jul-17 7:56am    
@RickZeeland can you be a bit more specific cause i don't understand what you said could fit into my code
Member 13284925 18-Jul-17 8:33am    
@RickZeeland you cant convert int to string it will not work bro. thanks anyway
RickZeeland 18-Jul-17 9:03am    
You are right, the .ToString() was missing, just testing if you were paying attention ;)
Member 13284925 18-Jul-17 10:12am    
Lool even so it still does not insert the null..
RickZeeland 18-Jul-17 10:15am    
That's strange, can you put a breakpoint on range3string = "NULL";
and see if that line is hit ?
Are you sure that the for loop runs 10 times ?

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



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900