-明- 2015-09-10 07:23 采纳率: 9.1%
浏览 1518

随机生成字符串的方法 求解释

//产生长度为length的随机字符串  
char* genRandomString(int length)  
{  
    int flag, i;  
    char* string;  
    srand((unsigned) time(NULL ));  
    if ((string = (char*) myMalloc(length)) == NULL )  
    {  
        myLog("Malloc failed!flag:14\n");  
        return NULL ;  
    }  

    for (i = 0; i < length - 1; i++)  
    {  
        flag = rand() % 3;  
        switch (flag)  
        {  
            case 0:  
                string[i] = 'A' + rand() % 26;  
                break;  
            case 1:  
                string[i] = 'a' + rand() % 26;  
                break;  
            case 2:  
                string[i] = '0' + rand() % 10;  
                break;  
            default:  
                string[i] = 'x';  
                break;  
        }  
    }  
    string[length - 1] = '\0';  
    return string;  
}  
    这个方法能简单的解释下么,有些看不懂新手,非常感谢
  • 写回答

1条回答 默认 最新

  • threenewbee 2015-09-10 08:23
    关注
     这代码目测根本就不对,它产生大写、小写、数字的概率各为1/3,这意味着数字出现的概率要大(按理说数字出现的概率是10/62,在这里是1/3)
    
    srand((unsigned) time(NULL ));  
    初始化随机数种子
    
    myLog("Malloc failed!flag:14\n"); 
    分配内存
    
    flag = rand() % 3;  
    这一行决定了产生大写、小写、数字的概率各1/3, rand()产生一个随机整数,对它取余,结果是0 1 2的概率各自1/3
    
    string[i] = 'A' + rand() % 26; 产生一个随机数字,因为ascii中A~Z是连续的,所以用A+一个随机的0~25之间的数,可以得到一个随机大写字母
    下面的类似
    
    string[length - 1] = '\0';  字符串结束
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿