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

 更新时间:2020年12月10日 16:55:51   作者:wjbooks  
这篇文章主要介绍了C++ 随机数字以及随机数字加字母生成的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

#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; 
}

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

相关文章

  • C++输入空格字符串的三种解决方法

    C++输入空格字符串的三种解决方法

    字符串一直是一个重点加难点,很多笔试面试都会涉及,带空格的字符串更是十分常见,现在对字符串的输入问题进行一下总结,本文给大家详细介绍了C++输入空格字符串的三种解决方法,需要的朋友可以参考下
    2025-04-04
  • C语言数据结构的时间复杂度和空间复杂度

    C语言数据结构的时间复杂度和空间复杂度

    算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度,感兴趣的同学可以参考阅读
    2023-04-04
  • C++中double浮点数精度丢失的深入分析

    C++中double浮点数精度丢失的深入分析

    这篇文章主要给大家介绍了关于C++中double浮点数精度丢失的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C语言之关于二维数组在函数中的调用问题

    C语言之关于二维数组在函数中的调用问题

    这篇文章主要介绍了C语言之关于二维数组在函数中的调用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • C++实现动态烟花代码

    C++实现动态烟花代码

    这篇文章主要介绍了利用C++实现的放烟花程序,用到了EGE图形库,文中的示例代码讲解详细,对我们学习C++有一定帮助,需要的可以参考一下
    2023-01-01
  • 浅析C++浅拷贝与深拷贝的联系和区别

    浅析C++浅拷贝与深拷贝的联系和区别

    在c++中,深拷贝和浅拷贝也算是一个难点,特别是对于初学者来说,往往在不知道两者区别的情况下而错误的使用了浅拷贝,从而导致了野指针之类的问题,但是又因为缺少理解所以很难定位到问题所在
    2022-09-09
  • c++如何分割字符串示例代码

    c++如何分割字符串示例代码

    因为c++字符串没有split函数,所以字符串分割单词的时候必须自己手写,也相当于自己实现一个split函数吧!下面跟小编一起来看看如何实现这个功能。
    2016-08-08
  • C++常用的11种设计模式解释及示例代码详解

    C++常用的11种设计模式解释及示例代码详解

    c++常用的设计模式包括单例模式、工厂模式、抽象工厂模式、适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式、观察者模式和命令模式等,这篇文章主要介绍了C++常用的11种设计模式解释及示例,需要的朋友可以参考下
    2023-02-02
  • VS2017中配置QT5.12.0的图文教程

    VS2017中配置QT5.12.0的图文教程

    本文主要介绍了VS2017中配置QT5.12.0的图文教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 通过GDB学习C语言的讲解

    通过GDB学习C语言的讲解

    今天小编就为大家分享一篇关于通过GDB学习C语言的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论