首先要了解一下随机函数random,rand,srand:
random返回一个0~num-1之间的随机数.random(num)是在stdlib.h中的一个宏定义.,num和函数返回值都是整型数.
int rand(void),返回一个[0,RAND_MAX]间的随机整数.
void srand(unsigned seed),参数seed是srand()的种子,用来初始化srand()的起始值.
srand()可以被认为是为rand()的“伪随机数”的结果指定一个固定的序列,若未引用srand()函数,则程序默认srand()括号中的值为1;如果引用的话,srand()括号中不能为空;
time_t time(time_t * timer):表示从CUT时间1970年1月1日00:00:00到当前时刻的秒数,作为srand的种子
代码如下:
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#define length 32
void getrandom(char *test,int len){
int i,j;
char randch[34]="1234567890qwertyuiopasdfghjklzxcvbnm";
srand((unsigned)time(NULL));//time(0)
for(i=0;i<length;i++){
j=1+(int)(34.0*rand()/(RAND_MAX+1.0));
*(test+i)=randch[j-1];
}
*(test+32)='\0';
return ;
}
int main(){
char random[length];
memset(random,0,length);
getrandom(random,length);
printf("%s\n",random);
return 0;
}
生成多组的我们可以循环生成并追加保存到文本中:
#! /bin/bash
a=10
while [ $a -gt 0 ]
do
./a.out >> random.txt
let a--
sleep 1
done