本文主要是介绍C语言 微秒级时间生成随机字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
秒级时间为种子,生成随机字符串
//产生长度为length的随机字符串
int genRandomString(int length,char* ouput)
{int flag, i;time_t t;t=time(NULL);Printf("%ld",t);srand((unsigned)t);for (i = 0; i < length - 1; i++){flag = rand() % 3;switch (flag){case 0:ouput[i] = 'A' + rand() % 26;break;case 1:ouput[i] = 'a' + rand() % 26;break;case 2:ouput[i] = '0' + rand() % 10;break;default:ouput[i] = 'x';break;}}return 0;
}
这种方法,在连续调用几次,生成多个随机文件名的场景中,文件名是相同的,不能达到目的,因为时间太短了。
微秒级时间生成随机字符串(限定字母数字)
//产生长度为length的随机字符串
int genRandomString2(int length,char* ouput)
{int flag, i;struct timeval tpstart;gettimeofday(&tpstart,NULL);srand(tpstart.tv_usec);for (i = 0; i < length - 1; i++){flag = rand() % 3;switch (flag){case 0:ouput[i] = 'A' + rand() % 26;break;case 1:ouput[i] = 'a' + rand() % 26;break;case 2:ouput[i] = '0' + rand() % 10;break;default:ouput[i] = 'x';break;}}return 0;
}
微秒级时间生成随机字符串
/*
* Descriptions:获取一个字节随机数
* Parameters:
* [In]: None
* [Out]: None
* Return: 返回随机数值0x00-0xFF
* Remarks:
*/
unsigned char get_one_byte_randrom()
{struct timeval tpstart;int r = 0;gettimeofday(&tpstart,null);srand(tpstart.tv_usec); r = rand()%255;return r;
}/*********************************************************************************** Function Rand_Get** Description 获取随机数** Returns None*********************************************************************************/
void Rand_Get(unsigned char *pOutBuf,unsigned int nLen)
{int i = 0;for(i=0;i<nLen;i++){pOutBuf[i] = get_one_byte_randrom();}
}
演示“伪随机数”的例子:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int get_randrom()
{int r = 0;srand( (unsigned)time( NULL ) );//初始化随机数r = rand()%255;return r;
}
int main(){printf("Hello World!\n");int ret = 0;while((ret = get_randrom())!=10){printf("%d\r\n",ret);}printf("while stop:(%d\r\n)",ret);return 0;
}
运行会发现随机数是批量相同的
这篇关于C语言 微秒级时间生成随机字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!