如何快速批量生成不重复的随机字符串呀?

解决方案 »

  1.   

    //************************************************************************************
    // * 函数名称: Set_Char
    // *  功  能: 获得一个指定长度,全为字母的字符串
    // *  入口参数: length      长度
    // * isFixed     是否为固定长度, true 为固定 false 不固定
    // *
    // *  返 回 值: 指定范围内的字符串
    // *  作  者: TONI
    // *  日  期: 2006.07.17
    // *  模块标识: 
    //************************************************************************************
    CString CRandData::Set_Char(int length, BOOL isFixed)
    {
    if(length<0)
    {
    AfxMessageBox("字符串长度不能小于0!");
    return "";
    }
    char a[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    short num=strlen(a);
    CString str="";
    //当不固定长度时
    if(!isFixed)
    {
    //长度为设定长度范围内的任一随机值
    length = rand()%length +1;
    }
    for(int i=0;i<length;i++)
    {
    str += a[rand()%num];
    }
    return str;
    }
    //************************************************************************************
    // * 函数名称: Set_Num
    // *  功  能: 获得一个指定长度,全为数字的字符串
    // *  入口参数: length      长度
    // * isFixed     是否为固定长度, true 为固定 false 不固定
    // *
    // *  返 回 值: 指定范围内的字符串
    // *  作  者: TONI
    // *  日  期: 2006.07.17
    // *  模块标识: 
    //************************************************************************************
    CString CRandData::Set_Num(int length, BOOL isFixed)
    {
    if(length<0)
    {
    AfxMessageBox("长度不能小于0!");
    return "";
    }
    char a[]="0123456789";
    int num=strlen(a);
    CString str="";
    if(!isFixed)
    {
    length = rand()%length +1;
    }
    for (int i=0;i<length;i++)
    {
    str +=a[rand()%num];
    }
    return str;
    }
    //************************************************************************************
    // * 函数名称: Set_Bigchar
    // *  功  能: 获得一个指定长度,全为大写字母的字符串
    // *  入口参数: length      长度
    // * isFixed     是否为固定长度, true 为固定 false 不固定
    // *
    // *  返 回 值: 指定范围内的字符串
    // *  作  者: TONI
    // *  日  期: 2006.07.17
    // *  模块标识: 
    //************************************************************************************
    CString CRandData::Set_Bigchar(int length,BOOL isFixed)
    {
    if(length<0)
    {
    AfxMessageBox("长度不能小于0!");
    return "";
    }
    char a[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int num = strlen(a);
    CString str="";
    if(!isFixed)
    {
    length = rand()%length +1;
    }
    for(int i=0;i<length;i++)
    {
    str += a[rand()%num];
    }
    return str;
    }//************************************************************************************
    // * 函数名称: Set_Smallchar
    // *  功  能: 获得一个指定长度,全为小写字母的字符串
    // *  入口参数: length      长度
    // * isFixed     是否为固定长度, true 为固定 false 不固定
    // *
    // *  返 回 值: 指定范围内的字符串
    // *  作  者: TONI
    // *  日  期: 2006.07.17
    // *  模块标识: 
    //************************************************************************************
    CString CRandData::Set_Smallchar(int length, BOOL isFixed)
    {
    if(length<0)
    {
    AfxMessageBox("长度不能小于0!");
    return "";
    }
    char a[]="abcdefghijklmnopqrstuvwxyz";
    int num = strlen(a);
    CString str = "";
    if(!isFixed)
    {
    length = rand()%length+1;
    }
    for(int i=0;i<length;i++)
    {
    str += a[rand()%num];
    }
    return str;
    }//************************************************************************************
    // * 函数名称: Set_String
    // *  功  能: 获得一个指定长度,混合字母和数字的字符串
    // *  入口参数: length      长度
    // * isFixed     是否为固定长度, true 为固定 false 不固定
    // *
    // *  返 回 值: 指定范围内的字符串
    // *  作  者: TONI
    // *  日  期: 2006.07.17
    // *  模块标识: 
    //************************************************************************************
    CString CRandData::Set_String(int length, BOOL isFixed)
    {
    if(length<0)
    {
    AfxMessageBox("长度不能小于0!");
    return "";
    }
    char a[]="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int num = strlen(a);
    CString str = "";
    if(!isFixed)
    {
    length = rand()%length+1;
    }
    for(int i=0;i<length;i++)
    {
    str += a[rand()%num];
    }
    return str;
    }C++的方法。
      

  2.   

    #include "RandData.h"
    引用的头文件~~~
      

  3.   

    .....
    不重复啊 那要做个记录了如果是小概率重复 c#用random就好了
      

  4.   

    不重复一样可以用random阿。。做一个list。比如放1000位。
    每次random取一个整数,范围在list位数之间,取一个值出来,然后去掉list里的值。
    每次缩小一次random范围就成了。
      

  5.   

    private void button2_Click(object sender, System.EventArgs e)
    {
    Random r=new Random();
    ArrayList list=new ArrayList();
    for(int i=1;i<=1000;i++)
    {
    list.Add(i);
    }
    StringBuilder sb=new StringBuilder();
    for(int i=999;i>=0;i--)
    {
    int j=r.Next(0,i);
    sb.Append(list[j]+"-");
    list.RemoveAt(j);
    }
    this.textBox1.Text=sb.ToString();
    }
      

  6.   

    13楼的兄弟,GUID怎么得到,能给点代码瞧瞧吗?
      

  7.   

    Guid key = Guid.NewGuid();
    string name = key.ToString("B");