Random rd1=new Random();  //建立随机数
for(int i=0;i<3;i++)
  {
int x=rd1.Next(0,9);
Response.Write(x+"<br>");
  } 
如果只按上面的方法写,Response输出的结果可能有很多种.包括下面的
1,1,1   1,3,4    1,6,7
3,5,6   6,6,6    8,8,0
我怎么才能让三次输出的结果不出现2个以上的重复值?我要的结果是类似下面的
1,3,5   6,7,8   0,2,4
5,7,8   3,5,7   8,2,4谢谢各位了,给我写详细点,小弟刚菜鸟入门。或者有没有别的更好的解决办法。

解决方案 »

  1.   

    for(int i=0;i<3;i++)
    {
    Random ram1=new Random((i+1)*5*unchecked((int)DateTime.Now.Ticks));
    Random ram=new Random((i+2)*unchecked((int)DateTime.Now.Ticks));
    int ss=ram.Next(0,5);
    int tt=ram1.Next(0,5);
    int t=ss+tt;
    }
      

  2.   

    可以加你QQ或MSN吗?我想详细问一下。
      

  3.   

    参考
    {
    string Vchar="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p"+
    ",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q"+
    ",R,S,T,U,V,W,X,Y,Z";
    string[] VcArray=Vchar.Split(new Char [] {','});//拆分成数组
    string VNum="";
    int temp=-1;//记录上次随机数值,尽量避避免生产几个一样的随机数 Random rand=new Random();
    //采用一个简单的算法以保证生成随机数的不同
    for(int i=1;i<VcodeNum+1;i++)
    {
    if(temp!=-1)
    {
    rand=new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
    }

    int t=rand.Next(61);
    if(temp!=-1&&temp==t)
    {
    return RndNum(VcodeNum); }
    temp=t;
    VNum+=VcArray[t];
    }
    return VNum;
      

  4.   

    两位兄弟的代码还是会产生重复值。并且范围也不是在可控制内。int t=rand.Next(61);
    会出现61以上的值。
      

  5.   

    你要想不出现重复值,那就需要当出现重复值时又去循环,
    由于是随机的,你没办法控制什么时候会出现重复值,当数据越少
    出现重复值的几率就越大,到最后可能会出现死循环,我做过实验,
    当有100条数据时,你取99条数据,估计也要个几小时都说不准,反正我
    电脑是CPU100%