上面错了,这才是我的问题//获得第一个随机整形数组
Random mRandom1=new Random();
ArrayList a1=new ArrayList();
int a=0;
while(a1.Count<5)
{
a=mRandom1.Next(1,50);
if(!a1.Contains(a))
{
a1.Add(a);
}
}
//获得第二个随机整形数组
Random mRandom2=new Random();
ArrayList a2=new ArrayList();
int b=0;
while(a2.Count<5)
{
b=mRandom2.Next(1,50);
if (!a2.Contains(b))
{
//通过此方式避免a2数组和a1中的数值产生重复
for (int i=0;i<5;i++)
{
if(Convert.ToString(b)!=a1[i].ToString())
{
a2.Add(b);
}
}
//通过此方式避免a2数组和a1中的数值产生重复
}
}
为什么第二个数组会是随机的几个重复数字?
我用Console.Write分别显示了这两个数组。
我头都快爆了。
Random mRandom1=new Random();
ArrayList a1=new ArrayList();
int a=0;
while(a1.Count<5)
{
a=mRandom1.Next(1,50);
if(!a1.Contains(a))
{
a1.Add(a);
}
}
//获得第二个随机整形数组
Random mRandom2=new Random();
ArrayList a2=new ArrayList();
int b=0;
while(a2.Count<5)
{
b=mRandom2.Next(1,50);
if (!a2.Contains(b))
{
//通过此方式避免a2数组和a1中的数值产生重复
for (int i=0;i<5;i++)
{
if(Convert.ToString(b)!=a1[i].ToString())
{
a2.Add(b);
}
}
//通过此方式避免a2数组和a1中的数值产生重复
}
}
为什么第二个数组会是随机的几个重复数字?
我用Console.Write分别显示了这两个数组。
我头都快爆了。
解决方案 »
- C#开发ActiveX遇到问题,大侠请进!
- vs2005工具问题
- 求一sql语句...
- 关于在屏幕上绘图的问题
- 散分求助:由OracleType.LongVarchar数据类型引出的关于FreeTextBox的问题
- 菜鸟求救:请大侠明灯指路(关于MSXML解析器和.net)
- 模拟登陆 POST数据拼接问题
- 我用VS2003 C#做一个程序,需要HTTP POST。但是第一次能成功,第二次就(GetResponse()处)报错提示基础连接已经关闭。请高手帮帮小弟
- 用C#的MediaPlayer控件如何播放MP3。。。。。
- 高手请看:用C#能否实现这样的功能?
- 水晶报表预览的问题
- 思归大哥,谢谢了提供了语法分析源代码示例的网址
直接用mRandom即可。
mRandom.Next
Random mRandom1=new Random();
ArrayList a1=new ArrayList();
int a=0;
while(a1.Count<5)
{
a=mRandom1.Next(1,50);
if(!a1.Contains(a))
{
a1.Add(a);
Console.WriteLine(a);
}
}
//获得第二个随机整形数组
Random mRandom2=new Random();
ArrayList a2=new ArrayList();
int b=0;
while(a2.Count<5)
{
b=mRandom2.Next(1,50); if(!a2.Contains(b) && !a1.Contains(b))
{
a2.Add(b);
Console.WriteLine(b);
}
}
错误出在这个地方
if (!a2.Contains(b))
{
//通过此方式避免a2数组和a1中的数值产生重复
for (int i=0;i<5;i++)
{
if(Convert.ToString(b)!=a1[i].ToString())
{
a2.Add(b);
Console.WriteLine(b);
}
}
//通过此方式避免a2数组和a1中的数值产生重复
}
之后
你的程序进入循环
for (int i=0;i<5;i++)
当满足if(Convert.ToString(b)!=a1[i].ToString())
条件之后,就加入了a2
而条件if(Convert.ToString(b)!=a1[i].ToString())是一定会出现满足的情况的
所以就循环了5次加入了a2
不重复才怪
--PS:cpu没有问题
{
ArrayList ar1 = new ArrayList();
ArrayList ar2 = new ArrayList();
int l = 50;
System.Random r = new Random();
while(true)
{
int iNumber = r.Next(100);
//Console.WriteLine(iNumber);
if(ar1.Contains(iNumber))
continue;
if(ar1.Count<l)
ar1.Add(iNumber);
iNumber = r.Next(100);
if(ar1.Contains(iNumber) || ar2.Contains(iNumber))
continue;
if(ar2.Count<l)
ar2.Add(iNumber);
if(ar1.Count==l && ar2.Count==l)
break;
}
for(int i=0;i<ar1.Count;i++)
Console.WriteLine("ar1[{0}]\t=\t{1}",i,ar1[i]);
Console.WriteLine();
for(int i=0;i<ar2.Count;i++)
Console.WriteLine("ar2[{0}]\t=\t{1}",i,ar2[i]);
}