如何随机生成1000个6位数的序列

Mou*_*ada 1 .net c# random winforms

我想随机生成1000个数字并将结果放在一个富文本框中,但我从我的代码中得到的结果只是一个出现在富文本框中的数字!

 private Random _random = new Random();
 int min = 000000;
 int max = 999999;
 string s;  
 private void Form1_Load(object sender, EventArgs e)
 {
    for (int i = 0; i < 1000; i++)
    {
       s = _random.Next(min, max).ToString("D6") + "\n";
    }
    richTextBox1.Text = s;
 }
Run Code Online (Sandbox Code Playgroud)

Mig*_*oom 6

每次获得下一个数字时,您都会覆盖s的值.相反,您必须将数字添加到列表中.像这样的东西会起作用.

List<string> numbers = new List<string>();

private void Form1_Load(object sender, EventArgs e)
{
    for (int i = 0; i < 1000; i++)
    {
        numbers.Add(_random.Next(min, max).ToString("D6"));
    }
    richTextBox1.Text = string.Join(Environment.NewLine, numbers);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

由于这里的大多数答案都使用 .net 类Random我不会使用它,因为在直接比较中它不会创建随机数。

例子: 在此输入图像描述

因此,如果您想要随机数,您应该避免使用Random并使用名称空间System.Security.Cryptography中的RNGCryptoServiceProvider

示例代码:

private RNGCryptoServiceProvider _random = new RNGCryptoServiceProvider ();
int min = 000000;
int max = 999999;
private void Form1_Load(object sender, EventArgs e)
{
    int[] results = new int[1000];
    var buffer = new byte[4];
    int min = 100000;
    int max = 999999;
    for (int i = 0; i < results.Length; i++) {
        while(results[i] < min || results[i] > max)
        {
            _random.GetBytes(buffer);
            results[i] = BitConverter.ToInt32(buffer, 0);
        }
        richTextBox1.Text += results[i].toString();
    }
}
Run Code Online (Sandbox Code Playgroud)