C语言 微秒级时间生成随机字符串

12 篇文章 3 订阅

秒级时间为种子,生成随机字符串

//产生长度为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;
}
运行会发现随机数是批量相同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值