class T
{
private double[] d = new double[3]; public double[] D
{
get { return d; }
set { d = value; }
} }
static void Main(string[] args)
{
T t = new T();
for (int i = 0; i < t.D.Length; i++)
{
t.D[i] = new Random().NextDouble();
}
for (int i = 0; i < t.D.Length; i++)
{
Console.WriteLine(t.D[i]);
}
Console.ReadLine();
}
这个程序为什么我debug执行D中会有三个不同的值,直接执行D中的三个值却每次都是相同的呢
{
private double[] d = new double[3]; public double[] D
{
get { return d; }
set { d = value; }
} }
static void Main(string[] args)
{
T t = new T();
for (int i = 0; i < t.D.Length; i++)
{
t.D[i] = new Random().NextDouble();
}
for (int i = 0; i < t.D.Length; i++)
{
Console.WriteLine(t.D[i]);
}
Console.ReadLine();
}
这个程序为什么我debug执行D中会有三个不同的值,直接执行D中的三个值却每次都是相同的呢
Random Rnd = new Random();
for (int i = 0; i < t.D.Length; i++)
{
t.D[i] = Rnd.NextDouble();
}
for (int i = 0; i < t.D.Length; i++)
{
Console.WriteLine(t.D[i]);
}或者你把Rnd定义为static的更方便。
Response.Write(new Random().NextDouble());
for (int i = 0; i < 10000000; i++)
;
Response.Write("<br/>" + new Random().NextDouble());
如上面的代码,如果中间的for循环执行次数少一个0,就会出现相同的结果。
这个是MSDN文档里对Random的一段描述,所以你所说的怪异现象是完整正常的,如果你要保证产生不同的数,代码应该这样写:
static void Main(string[] args)
{
T t = new T();
Random rd = new Random();
for (int i = 0; i < t.D.Length; i++)
{
t.D[i] = rd.NextDouble();
}
for (int i = 0; i < t.D.Length; i++)
{
Console.WriteLine(t.D[i]);
}
Console.ReadLine();
}