如题
比方说,生成13位的数字
1245879654881
1254895566545

这些数字永不重复,或者在一定时间内不重复,如1个月

解决方案 »

  1.   

    如果你是这样的话,干脆用DateTime.Now好过啦
    可以精确到秒,或者再精一点用Ticks它是用毫微秒的,那肯定唯一啦!
      

  2.   

    你可以使用Random(a)来产生一个伪随机数,其产生的随机数依赖于其种子值a,一般来讲使用当前时间作为种子产生的随机数是不会重复的
    首先产生当前的时间:
    Dim todyDay As Date
    Dim nowTime As String
    nowTime = todyDay.Now.tostring.replace("-","").replace(" ","").replace(":","")
    以当前时间转化的数字为种子值产生伪随机数
    Dim myRandom As New Random(CType(nowTime, Integer)) 
    Dim a As Integer = myRandom.Next
      

  3.   

    public class MyRandom
     {
      private string _strin;
      private string _strout;
      private Random _rnd;  public MyRandom(string strin)
      {
       _rnd=new Random(System.Environment.TickCount);//确保每次使用得到不同的随机数,System.Environment.TickCount表示系统启动以来的毫秒数
       _strin=strin;
      }  private string GetOneRandomNum(string strformat)
      {
       string strtemp;
       switch(strformat)
       {
        case "*":
        {
         int itmp=_rnd.Next(36);
         if(itmp<10)
          strtemp=_rnd.Next(10).ToString();
         else
          strtemp=Convert.ToChar(_rnd.Next(26)+'A').ToString();
         break;
        }
        case "#":
        {
         strtemp=_rnd.Next(10).ToString();
         break;
        }
        case "$":
        {
         strtemp=Convert.ToChar(_rnd.Next(26)+'A').ToString();
         break;
        }
        default:
        {
         strtemp=strformat;
         break;
        }
       }
       return strtemp;
      }  public string GetRandomNum()
      {
       _strout=String.Empty;
       for(int i=0;i<_strin.Length;i++)
       {
        _strout+=this.GetOneRandomNum(_strin[i].ToString());
       }
       return _strout;
      }
     }下面是这个类在控制台下的使用
    Console.WriteLine("全是数字的随机数");
       MyRandom rnd1=new MyRandom("####-####-####-####");
       for(int i=0;i<10;i++)Console.WriteLine(rnd1.GetRandomNum());
       Console.WriteLine("全是大写字母的随机数");
       MyRandom rnd2=new MyRandom("$$$$-$$$$-$$$$-$$$$");
       for(int i=0;i<10;i++)Console.WriteLine(rnd2.GetRandomNum());
       Console.WriteLine("大写字母和数字混合随机数");
       MyRandom rnd3=new MyRandom("****-****-****-****");
       for(int i=0;i<10;i++)Console.WriteLine(rnd3.GetRandomNum());
       Console.WriteLine("前4位为1234后面分别是4位数字4位字母4位混合的随机数,没有分隔符");
       MyRandom rnd4=new MyRandom("1234####$$$$****");
       for(int i=0;i<10;i++)Console.WriteLine(rnd4.GetRandomNum());
       Console.ReadLine();      输出的结果是全是数字的随机数
    9162-4581-4990-0207
    1783-0140-3387-3646
    6080-4696-2719-0319
    2333-1887-7581-7088
    5239-3034-7103-0400
    1859-3158-1128-8891
    8337-9252-0859-7572
    4798-5843-7571-7459
    1846-0319-3294-5506
    4941-8060-9004-4445
    全是大写字母的随机数
    XEQF-MOWD-MYYA-AFAS
    CTVI-BEKC-JIVU-HRLR
    RBXA-KSYR-HSEX-AHEX
    GIII-DVWS-TNVD-TCVV
    NHJY-IAHK-UDBI-AMBB
    EXNZ-JCOV-EEGW-WVYE
    XJKT-YFPG-AXOZ-UOSG
    LTZW-OVLK-SNUE-TLOZ
    FWLQ-CIDY-IHZM-OOBQ
    LZKC-VCQB-YAAL-LKMP
    大写字母和数字混合随机数
    WQO1-WN57-R516-PROW
    4SPU-DSKE-L5C1-DCJX
    VO52-MAK5-3HU0-INQF
    L6B3-YG0J-D5DS-K7NJ
    TJ6Z-OM8I-PUFP-NPJW
    GJA2-C80V-WZNL-7RZ9
    AZMY-J4WX-00T1-DBNP
    325A-WNIE-OPBB-7E4W
    QQDN-AR5C-FAYY-Z4IV
    SRWF-C9TN-LXIV-MUHF
    前4位为1234后面分别是4位数字4位字母4位混合的随机数,没有分隔符
    12342886ROADWN57
    12348625EDCRPROW
    12341446RPSUDSKE
      

  4.   

    to:caihanchao(超超)
    的确用时间来生成可以,但是容易被人猜到,不安全
      

  5.   

    随机数方法也许可行但是我想尝试一下guid,个人觉的guid好像安全点,不知道怎样通过guid来得到一串数字
      

  6.   

    我来写一个吧
    Random rd=new Random(1);
    Response.Write(rd.Next(9999999999999));
      

  7.   

    改成:
    Random rd=new Random(1000000000000);
    Response.Write(rd.Next(9999999999999));
      

  8.   

    使用random
    Dim MyValue As Integer
    Randomize   ' Initialize random-number generator.
    MyValue = CInt(Int((6 * Rnd()) + 1)) ' Generate random value between 1 and 6.
      

  9.   


    /*
    如:
    返回1-max之间的随机数,且不重要
    seed就是每取用了之后何存,以便下次使用
    */public int GetRandomNumber(int max,int seed)
    {
      return (seed*11+11)/max
    }
      

  10.   

    Random输入MSDN就会有答案的。
    有了思路后还是自己解决的好