随机化数字而不在C#中重复它

时间:2014-03-24 13:02:58

标签: c# random numbers

我想随机化9个数字,因此每个跟踪中的随机数在之前的尝试中会有不同的数字...这是我的代码

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

2 个答案:

答案 0 :(得分:2)

Random.Next无法保证返回9个不同的值。您应该创建值列表,然后将其随机播放。

Random num1random = new Random();
var numbers = Enumerable.Range(1, 9).OrderBy(item => num1random.Next()).ToList();
label1.Text = numbers[0].ToString();
//other labels

答案 1 :(得分:2)

你真的不想要9个随机数,你真的想要随机顺序从1到9的数字:

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];