【问题标题】:Randomizing Numbers without repeating it in C#在 C# 中随机化数字而不重复它
【发布时间】:2014-05-01 20:32:52
【问题描述】:

我想随机化 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();

【问题讨论】:

标签: c# random numbers


【解决方案1】:

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

【讨论】:

  • 我可能会选择item => num1random.Next(),但是:当然
  • @MarcGravell 这会让订购“更随机”对吧?
【解决方案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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多