//产生长度为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;
}
这个方法能简单的解释下么,有些看不懂新手,非常感谢
随机生成字符串的方法 求解释
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 请教:如何用postman调用本地虚拟机区块链接上的合约?
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
- ¥15 乘性高斯噪声在深度学习网络中的应用
- ¥15 运筹学排序问题中的在线排序
- ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛