我是编程新手,正在阅读一本关于 C# 的书。这段代码没有输出我所期望的结果。
这是代码:
public partial class Form1 : Form
{
static string stars = "****************************************************************";
const int MAXVAL = 52;
const int MAXELEMENTS = 100;
int[] data = new int[MAXELEMENTS];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int i;
Random rd = new Random(5);
int j;
string buff;
for (i = 0; i < data.Length; i++)
{
data[i] = rd.Next(MAXVAL);
buff = " ";
for (j = 0; j < data[i]; j++)
{
buff += "*";
lstResult.Items.Add(data[i].ToString() + " " + buff);
}
}
}
}
这是输出:
为什么 ListView 中没有随机顺序的随机数?
最佳答案
您始终使用相同的数字 5
为随机实例播种。这会导致重复数字。您只需使用默认构造函数即可:
Random rd = new Random();
查看 MSDN 上的示例这正是显示了这种行为。
顺便说一句,这也是一个常见的陷阱,您应该始终重用相同的随机实例,而不是始终创建一个新实例(在循环中),因为种子是从当前时间创建的。如果您非常快地创建随机数,您将获得相同的种子,从而导致重复的数字。
关于c# - 输出错误。我的随机数在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19361037/