大哥们:     如何产生6位随机数,不重复!具体要求就是随机产生 0---9之间的数,共6位,每次不能重复 (比如:1589636,896144)c#实现,狂谢大哥们!

解决方案 »

  1.   

    using System;
    class AA
    {   
    static void Main()
    {
    string [] a={'0','1','2','3','4','5','6','7','8','9'};
    string strTest="";
    Random r=new Random();
    for(int i=0;i<6;i++)
    {
    strTest+=a[r.Next(0,a.Length)].ToString();
         }
    Console.Write(strTest);
    }
    }
      

  2.   

    Function ProducePwd(ByVal TmpInt As Integer) As String
            Dim ra As New Random(CInt(Right(Now.Ticks.ToString, 8)) + TmpInt)
            Return ra.Next(100000, 999999).ToString()
        End Function
      

  3.   

    MinNO = 100000          '下限
    MaxNO = 999999          '上限
    CardNo = (MaxNO - MinNO + 1) * Rnd() + MinNO
      

  4.   

    using System;
    class AA
    {   
    static void Main()
    {
    string [] a={'0','1','2','3','4','5','6','7','8','9'};
    string strTest="";
    Random r=new Random();
    for(int i=0;i<6;i++)
    {
    strTest+=a[r.Next(0,a.Length)].ToString();
         }
    Console.Write(strTest);
    }
    }
    这个好象不符合要求吧。。这个是产生六位数且每位数都不同。跟产生不同的六位数不一样吧。。
      

  5.   

    自己解决了,谢谢           Random ro = new Random(); 
         
                    
                   int iDown=100000; 
          int iUp=999999;               UserNumber=Convert.ToString(ro.Next(iDown,iUp));
      

  6.   

    using System;
    using System.Data;
    using System.Collections;
    using System.Data.SqlClient;
    using Microsoft.DVAP.CommonFunction.CommonUtil;namespace PrizeOperate
    {
    /// <summary>
    /// 随机数生成器
    /// </summary>
    public class RndCreator
    {
    //错误信息
    public string strErr = ""; /// <summary>
    /// 得到一个范围内的随机数字
    /// </summary>
    /// <param name="iLowNum">随机生成的上限值</param>
    /// <param name="iHighNum">随机生成数字的下限值</param>
    /// <returns></returns>
    public int GetRndSingleNum(int iLowNum,int iHighNum)
    {
    if ((iLowNum<0)||(iHighNum<0))
    {
                    strErr = "上限或下限的值不能 小于 零!";
                    return -1;
    } if (iLowNum > iHighNum)
    {
    strErr = "上限值 不能小于 下限值!";
    return -2;
    } int iRndNum;
    Random rnd = new Random((iHighNum-iLowNum+1) * unchecked((int)DateTime.Now.Ticks));
    //返回的数值为: 一个大于或等于 iLowNum 且小于 iHighNum 的 32 位带符号整数;所以要iHighNum加1
    iRndNum = rnd.Next(iLowNum,(iHighNum+1));
    return iRndNum;
    }
    /// <summary>
    /// 得到一组不同的随机数字
    /// </summary>
    /// <param name="iCount">要随机产生数字的个数</param>
    /// <param name="iLowNum">每个数字的上限值</param>
    /// <param name="iHighNum">每个数字的下限值</param>
    /// <returns></returns>
    public int[] GetRndArrayNum(int iCount,int iLowNum,int iHighNum)
    {
    int iRndNum;
    int[] iRndArrayNum; if ((iLowNum<0)||(iHighNum<0))
    {
    strErr = "上限或下限的值不能 小于 零!";
    return null;
    } if (iLowNum > iHighNum)
    {
    strErr = "上限值 不能小于 下限值!";
    return null;
    } if (iCount <=0 )
    {
    strErr = "随机产生的数量不能 小于或等于 零!";
    return null;
    }
                iRndArrayNum = new Int32[iCount];
                
    for (int i=0;i<iCount;i++)
    {
    try
    {
    iRndNum  =  GetRndSingleNum(iLowNum,iHighNum);
    //如果随机产生的数字重复,再产生随机数字,直到不重复为止
    while(ifRepeate(iRndNum,iRndArrayNum)==1)
        {
                            iRndNum  =  GetRndSingleNum(iLowNum,iHighNum);                                                                        
    }
    iRndArrayNum[i] = iRndNum;
    }
    catch(Exception e)
    {
    strErr = e.Message;
    throw;
                    }
    }
    return iRndArrayNum;
    } //判断在数组中是否有重复的数字.0:没有重复;1:有重复;-1:出错
    private int ifRepeate(int iNum,int[] iArrayNum)
    {
    int bRes = 0; if (iArrayNum.GetLength(0)<=0)
    {
    bRes = -1;
    return bRes;
    }
    for (int i=0;i<iArrayNum.GetLength(0)-1;i++)
    {
    if (iNum == iArrayNum[i])
    {
    bRes = 1;
    return bRes;
    }
    }
    return bRes;
    } /// <summary>
    /// 得到任意位数的随机字符数字,每一字符位数字在规定的上限值和下限值范围内.
    /// </summary>
    /// <param name="iSize">随机数字的位数</param>
    /// <param name="iLowNum">每个数字位的上限值</param>
    /// <param name="iHighNum">每个数字位的下限值</param>
    /// <returns></returns>
    public string GetRndStr(int iSize,int iLowNum,int iHighNum)
    {
    string RndStr=""; int iFirst = 0;
    int[] rtArray = new Int32[iSize]; Random rf = new Random((iHighNum-iLowNum+1) * unchecked((int)DateTime.Now.Ticks));
    iFirst = rf.Next(iLowNum,iHighNum+1);
    rtArray[0]=iFirst; //得到第一位
    RndStr += rtArray[0].ToString();
    for(int i=1;i<iSize;i++)
    {
    //每次给不同的种子值,避免每次数字重复
    Random rdm = new Random(i * iFirst * unchecked((int)DateTime.Now.Ticks)); 
    //返回的数值为: 一个大于或等于 iLowNum 且小于 iHighNum 的 32 位带符号整数;所以要iHighNum加1
    rtArray[i] = rdm.Next(iLowNum,iHighNum+1);
    iFirst = rtArray[i];
    RndStr += rtArray[i].ToString();
    }
    return RndStr;
    }
    /// <summary>
    /// 得到一组任意指定位数的随机字符数字
    /// </summary>
    /// <param name="iCount">要随机产生的各数</param>
    /// <param name="iSize">每随机数字的位数</param>
    /// <param name="iLowNum">每个数字位的上限值</param>
    /// <param name="iHighNum">每个数字位的下限值</param>
    /// <returns>返回一组随机数字数组</returns>
    public string[] GetRndArrayStr(int iCount,int iSize,int iLowNum,int iHighNum)
    {
    string[] strRndArrayNum;
    string strRndNum; if ((iLowNum<0)||(iHighNum<0))
    {
    strErr = "上限或下限的值不能 小于 零!";
    return null;
    } if (iLowNum < iHighNum)
    {
    strErr = "上限值 不能小于 下限值!";
    return null;
    } if (iSize <=0 )
    {
    strErr = "每个随机数字的位数字不能 小于 零!";
    return null;
    } if (iCount <=0 )
    {
    strErr = "随机产生的数量不能 小于或等于 零!";
    return null;
    } strRndArrayNum = new string[iCount];
               
    for (int i=0;i<iCount;i++)
    {
    try
    {
    strRndNum = GetRndStr(iSize,iLowNum,iHighNum); //如果随机产生的数字重复,再产生随机数字,直到不重复为止
    while(ifStrRepeate(strRndNum,strRndArrayNum)==1)
    {
    strRndNum = GetRndStr(iSize,iLowNum,iHighNum);                                                                 
    }
    strRndArrayNum[i] = strRndNum;
    }
    catch(Exception e)
    {
    strErr = e.Message;
    throw;
    }
    }
        return strRndArrayNum;
    } //判断在数组中是否有重复的数字.0:没有重复;1:有重复;-1:出错
    private int ifStrRepeate(string strNum,string[] strRndArrayNum)
    {
    int bRes = 0; if (strRndArrayNum.GetLength(0)<=0)
    {
    bRes = -1;
    return bRes;
    }
    for (int i=0;i<strRndArrayNum.GetLength(0)-1;i++)
    {
    if (strNum == strRndArrayNum[i])
    {
    bRes = 1;
    return bRes;
    }
    }
    return bRes;
    } }
    }
      

  7.   

    http://www.codeproject.com/aspnet/CaptchaImage.asp
    这有一个现成的例子