找了好久也找不到问题的问题
--------------------编程问答-------------------- 你这里有递归,这么简单的问题不应该用递归, --------------------编程问答-------------------- ckMdIndex完全不对,不能保证tmp不重复,给你一个简单可靠的实现:
private void main()
{
int[2]=getMdIndex(1,4);
}
private int[] getMdIndex(int minValue, int maxValue)
{
int xsrs=2;
Random ran = new Random(unchecked((int)DateTime.Now.Ticks));
int[] mdIndex = new int[xsrs];
int tmp = 0;
for (int i = 0; i < xsrs; i++)
{
tmp = ran.Next(minValue, maxValue);
while(!ckMdIndex(mdIndex, tmp, minValue, maxValue))
{
tmp = ran.Next(minValue, maxValue);
}
mdIndex[i] = tmp;
if (i > 0 && mdIndex[0] == mdIndex[1])
{
MessageBox.Show("位置1与位置2数值相同");
}
}
return mdIndex;
}
private bool ckMdIndex(int[] mdIndex, int tmp, int minValue, int maxValue)
{
int n = 0;
while (n < mdIndex.Length)
{
if (mdIndex[n] == tmp)
{
return false;
}
n++;
}
return true;
}
不过有可能陷入死循环,请慎用, --------------------编程问答-------------------- ckMdIndex函數寫的有問題 --------------------编程问答-------------------- public static void RandomNum(IList<int> ilist, Random rm)
{
while (true)
{
int n = rm.Next(1, 5);
if (!ilist.Contains(n))
{
ilist.Add(n);
break;
}
}
} --------------------编程问答-------------------- 试下四楼的方法 --------------------编程问答-------------------- --------------------编程问答-------------------- 單步調試,你就知道問題在哪了.
补充:.NET技术 , C#