0

I want to randomize 9 numbers so random number in each trail would be different of number in previous attempt... here is my code

            Random num1random = new Random();
        label1.Text = num1random.Next(1, 9).ToString();
        label2.Text = num1random.Next(1, 9).ToString();
        label3.Text = num1random.Next(1, 9).ToString();
        label4.Text = num1random.Next(1, 9).ToString();
        label5.Text = num1random.Next(1, 9).ToString();
        label6.Text = num1random.Next(1, 9).ToString();
        label7.Text = num1random.Next(1, 9).ToString();
        label8.Text = num1random.Next(1, 9).ToString();
        label9.Text = num1random.Next(1, 9).ToString();
waleed-gfx
  • 23
  • 1
  • 5
  • there are many, many ways to randomise a set of integers. you might find some help here : http://stackoverflow.com/questions/375351/most-efficient-way-to-randomly-sort-shuffle-a-list-of-integers-in-c-sharp – Timothy Groote Mar 24 '14 at 13:05

2 Answers2

2

Random.Next is not guaranteed to return 9 distinct values. You should create the value list, then shuffle it.

Random num1random = new Random();
var numbers = Enumerable.Range(1, 9).OrderBy(item => num1random.Next()).ToList();
label1.Text = numbers[0].ToString();
//other labels
Ufuk Hacıoğulları
  • 37,978
  • 12
  • 114
  • 156
2

You don't really want 9 random numbers, you really want the numbers from 1 to 9 in a random order:

Random r = new Random();
var numbers = Enumerable.Range(1,9) // create a sequence of the integers 1 through 9
    .OrderBy(x => r.Next()) // randomize the order
    .ToArray(); // turn the sequence into an array.

// assign the numbers to the labels
label1.Text = numbers[0];
...
label9.Text = numbers[8];
Rik
  • 28,507
  • 14
  • 48
  • 67