C++产生随机数的实现代码

 更新时间:2013年05月29日 17:07:33   作者:  
本篇文章是对C++中产生随机数的实现代码进行了详细的分析介绍,需要的朋友参考下
C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C++里没有自带的random(int number)函数。
(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX值至少为32767。
例如:
复制代码 代码如下:

#include<stdio.h>
#include <iostream>

复制代码 代码如下:

int _tmain(int argc, _TCHAR* argv[])
{
       for(int i=0;i<10;i++)
             cout << rand() << endl;
}

(2) 如果你要随机生成一个在一定范围的数,
例如:随机生成10个0~99的数:
复制代码 代码如下:

#include<stdio.h>
#include <iostream>

复制代码 代码如下:

int _tmain(int argc, _TCHAR* argv[])
{
     for(int x=0;x<10;x++)
           cout << rand()%100 << " ");
}

总之,产生a~b范围的随机数,可用: a+rand()%(b-a+1)
(3)但是上面两个例子多次运行的时候输出结果仍和第一次一样。这样的好处是便于调试,但失去了随机数的意义。如果想让每次运行产生不同的随机数,将用到srand()函数。 srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。
srand()函数定义 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值来当做seed
如果你用time(0)的话,要加入头文件#include<time.h>
例如:
复制代码 代码如下:

#include<stdio.h>
#include<time.h>                               
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
 srand((unsigned)time(NULL)); //srand((unsigned)time(0))   srand((int)time(0) 均可
for(int i=0;i<10;i++)
cout << rand() << endl;
}

这样每次运行的结果就会不一样了!!

相关文章

  • C++算法系列之中国农历的算法

    C++算法系列之中国农历的算法

    这篇文章主要介绍了C++计算中国农历的深入浅析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 
    2018-05-05
  • VC++实现CStdioFile写入及读取文件并自动换行的方法

    VC++实现CStdioFile写入及读取文件并自动换行的方法

    这篇文章主要介绍了VC++实现CStdioFile写入及读取文件并自动换行的方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • C++实现一维向量旋转算法

    C++实现一维向量旋转算法

    这篇文章主要介绍了C++实现一维向量旋转算法,非常实用的经典算法,需要的朋友可以参考下
    2014-08-08
  • C语言操作符基础知识图文详解

    C语言操作符基础知识图文详解

    这篇文章主要以图文结合的方式为大家详细介绍了C语言位运算基础知识,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-08-08
  • opencv实现轮廓高斯滤波平滑

    opencv实现轮廓高斯滤波平滑

    这篇文章主要为大家详细介绍了opencv实现轮廓高斯滤波平滑,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C++教程之进制转换的实现方法

    C++教程之进制转换的实现方法

    在C++中进行进制转换可以通过标准库函数或自定义算法实现,本文主要为大家整理了两种常见场景的转换方法及示例代码,有需要的小伙伴可以根据需求进行选择
    2025-04-04
  • 关于C++类的成员初始化列表的相关问题

    关于C++类的成员初始化列表的相关问题

    下面小编就为大家带来一篇关于C++类的成员初始化列表的相关问题。小编觉得挺
    2016-05-05
  • C++利用代理模式实现远程代理,虚拟代理和保护代理

    C++利用代理模式实现远程代理,虚拟代理和保护代理

    今天给大家简单介绍代理模式,一个很简单的设计模式,旨在不改变原对象的情况下通过代理对象来控制对原对象的访问。代理模式根据具体情况还可以分为远程代理、虚拟代理、保护代理等,下面来介绍一下
    2023-04-04
  • C语言中大小写字母相互转化的方法示例

    C语言中大小写字母相互转化的方法示例

    在C语言中,大小写字母的转换可以通过标准库中的ctype.h头文件提供的函数来实现,具体来说,toupper()函数可以将小写字母转换为大写字母,而tolower()函数可以将大写字母转换为小写字母,本文给大家介绍了C语言中大小写字母相互转化的方法,需要的朋友可以参考下
    2024-08-08
  • Qt利用ffmpeg实现音视频同步

    Qt利用ffmpeg实现音视频同步

    这篇文章主要为大家详细介绍了Qt如何利用ffmpeg实现音视频同步的功能,文中的示例代码讲解详细,对大家深入了解Qt有一定的帮助,需要的可以参考一下
    2023-01-01

最新评论