程序里的一段代码产生的随即数总是相同,不知道是什么原因,我是一条条数据进行处理的,但产生的数据却相同不知道为什么?请高手指教
Random rd = new Random(System.DateTime.Now.Millisecond);
dz = Math.Abs(dz);
if (dz > 12)
{
dz = rd.Next(0, 5) + rd.NextDouble();
dz = Math.Round(dz, 1);
}
if (d2 > 12)
{
dx = rd.Next(0, 5) + rd.NextDouble();
dy = rd.Next(0, 5) + rd.NextDouble();
d2 = Math.Round(Math.Sqrt(dx * dx + dy * dy), 1);
dy = Math.Round(dy, 1);
dx = Math.Round(dx, 1);
}
你所说的随机数相同是指调试程序发现rd.Next(0, 5)得到的值相同吗?
我觉得不会
嗯是啊,这个应该不会啊 ,可是今天见鬼了
public int numduos()
{
Random random = new Random();
int[] number ={ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
int num = random.Next(10);
return number[num];
//Comsole.WriteLine("这个数是:{0}", number[num]);
}
public string RandomNum()
{
string strchar = "1,2,3,42,34,23,452";
Random r = new Random(Guid.NewGuid().GetHashCode());
string[] arr = strchar.Split(',');
foreach (string s in arr)
{
int index = r.Next(0, arr.Length);
string strTemp = arr[index];
arr[index] = arr[0];
arr[0] = strTemp;
}
string aa = "";
foreach (string s in arr)
{
aa += s + ",";
}
string[] bb = aa.Split(',');
string cc = "";
for (int i = 0; i < 5; i++)
{
cc += bb[i] + ",";
}
return cc.Trim().Substring(0, cc.Trim().Length - 1).Replace(",", ",");
}
试下这个,我测试了正常
嗯 十分感谢
问题解决,可能就是每次都进行了声明导致的
new Random(DateTime.Now.Ticks)
问题解决,可能就是这个问题,按照这个思路解决了
将这个Random rd声明到外面去
嗯 十分感谢
random rd 声名的位置有问题,你是不是每次用随机数的时候都Random rd = new Random(System.DateTime.Now.Millisecond);。那么对于你下面的程序来说rd种子是一样的。random是伪随机,种子一样,下面的程序就一样了。你考虑一下我的意见
嗯 十分感谢
每次循环种子加1
或者用空的构造函数new Random();
嗯 十分感谢