//产生长度为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/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'; 字符串结束