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)
每次获得下一个数字时,您都会覆盖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)
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |