
本文共 1669 字,大约阅读时间需要 5 分钟。
我就废话不多说了,大家还是直接看代码吧~
#include
#include
void MainWindow::slot_clicked()
{
QString strRand;
int length = 32;
QString strTmp = "1234567890QWERTYUIOPASDFGHJKLZXCVBNM";
struct timeb timer;
ftime(&timer);
srand(timer.time * 1000 + timer.millitm);//毫秒种子
for(int i = 0; i < length; i++ )
{
int j = rand()%35;
strRand += strTmp.at(j);
}
qDebug() << strRand;
补充知识:C/C++生成随机数字符串(错误方法和正确方法)
先说错误的方法。生成的10个随机数是一样的。
#include
#include
#include
#include
void make_rand_str(char *pchStr,int iLen)
{
time_t tCurTime = 0;
int iRandValue = 0;
int i = 0;
unsigned int state = 0;
if(NULL == pchStr || iLen <= 0)
{
return;
}
tCurTime = time(NULL);
printf("\n***%ld***%u**\n",tCurTime ,(unsigned int)tCurTime);
srand((unsigned int)tCurTime);
iRandValue = rand();
snprintf(pchStr,iLen,"%d",iRandValue);
printf("\n====%s====\n",pchStr);
return;
}
int main()
{
char str[20];
int i = 0;
for(i = 0; i < 10; i++)
{
memset(str,0,sizeof(str));
make_rand_str(str,sizeof(str));
// printf("\n====%s====\n",str);
}
return 0;
}
正确的方法,生成了10个不一样的随机数
#include
#include
#include
#include
void make_rand_str(char *pchStr,int iLen,int num)
{
time_t tCurTime = 0;
int iRandValue = 0;
int i = 0;
unsigned int state = 0;
if(NULL == pchStr || iLen <= 0)
{
return;
}
tCurTime = time(NULL);
printf("\n***%ld***%u**\n",tCurTime ,(unsigned int)tCurTime);
srand((unsigned int)tCurTime);
for(i = 0;i < num; i++)
{
iRandValue = rand();
snprintf(pchStr,iLen,"%d",iRandValue);
printf("\n====%s====\n",pchStr);
}
return;
}
int main()
{
char str[20];
memset(str,0,sizeof(str));
make_rand_str(str,sizeof(str),10); // 10个随机数
// printf("\n====%s====\n",str);
return 0;
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方欢迎留言讨论,望不吝赐教。
转载地址:https://blog.csdn.net/weixin_28871097/article/details/116995665 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关于作者
