用户登录
用户注册

分享至

C++ 随机数字以及随机数字加字母生成的案例

  • 作者: 我爱内含段子
  • 来源: 51数据库
  • 2021-08-03

我就废话不多说了,大家还是直接看代码吧~

#include <time.h>
#include <sys/timeb.h>
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 <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h> 
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 <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h> 
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; 
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方欢迎留言讨论,望不吝赐教。

软件
前端设计
程序设计
Java相关