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();
1

2 Answers 2

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];
Sign up to request clarification or add additional context in comments.

Comments

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

2 Comments

I'd have probably have gone with item => num1random.Next(), but: sure
@MarcGravell That would make ordering 'more random' right?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.