• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言/C++中如何产生随机数

C语言/C++中如何产生随机数

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言和c++教学,c语言与c++,c语言和c++有什么区别,c语言与c++的区别,c语言和c++先学哪个等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数。

需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib.h;而使用time()函数需要引入ctime头文件。

使用rand()函数获取一个随机数
如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。

例子1.1:

使用rand()函数获取一定范围内的一个随机数

如果想要获取在一定范围内的数的话,直接做相应的除法取余即可。

例子2.1:

我们上面获取的都是随机的整数,那么如何获取小数呢?例如:我们可以先获得10001以内的整数(0~10000),然后再用这个整数除以10000得到小数点后两位的小数。

例子2.2:

结果:

使用rand函数和time函数
我们上面已经可以获取随机数了,为什么还需要使用time函数呢?我们通过多次运行发现,该程序虽然生成了10个随机数,但是这个10个随机数是固定的,也就是说并不随着时间的变化而变化。

这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。

上面的例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。

srand()函数定义 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值来当做seed

如果你用time(0)的话,要加入头文件#include<ctime>

time(0)或者time(NULL)返回的是系统的时间(从1970.1.1午夜算起),单位:秒

例子3.1:

void main()
{
 int a;
 a=time(0);//time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒
 cout<<a<<endl;
}
</div>
例子3.2:
</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c语言与c++基础知识点(必看)
  • 解析C语言与C++的编译模型
  • C语言/C++如何生成随机数
  • C++在C语言基础之上增强的几个实用特性总结
  • C语言/C++中如何产生随机数
  • C/C++语言中结构体的内存分配小例子

相关文章

  • 2017-05-28解析C++ 浮点数的格式化显示
  • 2017-05-28关于C++ string和c类型字符数组的对比
  • 2017-05-28C++获取多浏览器上网历史记录示例代码(支持获取IE/Chrome/FireFox)
  • 2017-05-28C++ primer基础之容器insert
  • 2017-05-28MFC命名规则汇总
  • 2017-05-28Linux下C语言的fork()子进程函数用法及相关问题解析
  • 2017-05-28C语言 MD5的源码实例详解
  • 2017-05-28C语言练习题:自由落体的小球简单实例
  • 2017-05-28举例讲解C语言链接器的符号解析机制
  • 2017-05-28浅谈C++继承中的名字查找

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++ 学习之旅 Windows程序内部运行原理
    • C++ expected initializer before 'myfile'
    • C语言之实现字符串小写变大写的实例
    • solaris操作系统做c应用程序开发步骤
    • GCC 编译c程序的方法及过程解析
    • 浅谈在函数中返回动态的内存
    • C++对象的动态建立与释放详解
    • C++实现广度优先搜索实例
    • C语言十进制转二进制代码实例
    • Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有