Reputation: 23
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();
Upvotes: 0
Views: 225
Reputation: 38508
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
Upvotes: 2
Reputation: 29243
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];
Upvotes: 2