//产生长度为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 微信公众号自制会员卡没有收款渠道啊
- ¥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编程架构设计的方案 有偿