可以使用srand()函数和rand()函数来产生随机数,其中srand()用来初始化随机数种子,rand()用来产生随机数。因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand()的参数,用time函数值(即当前时间),因为两次调用rand()函数的时间通常是不同的,这样就可以保证随机性了。

一、rand()

函数名:   rand   
  功   能:   随机数发生器 
  用   法:   int rand(void);

所在头文件: stdlib.h

函数说明 :

  1. rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。
  2. rand()返回一随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围最少是在32767之间(int)。用 unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选中的机率是相同的。
  3. 用户未设定随机数种子时,系统默认的随机数种子为1。
  4. rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。

二、srand()

函数名:   srand   
  功   能:   初始化随机数发生器   
  用   法:   void srand(unsigned  int  seed);  
  所在头文件: stdlib.h  
  函数说明:
srand()用来设置rand()产生随机数时的随机数种子。

参数seed必须是个整数,通常可以利用time(0)的返回值或NULL来当做seed。

如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

来个栗子:

#include <iostream>
#include <cstdlib>
#include <ctime>
using std::cout; #define MIN 1 //随机数产生的范围
#define MAX 10 int main()
{
int i;
srand((unsigned)time());
cout<<"Ten random numbers from "<<MIN<<
" to "<<MAX<<" :\n"<<endl;
for(i=; i<; i++) //产生随机数
{
cout<<MIN + (int)MAX * rand() / (RAND_MAX + )<<"\t";
}
cout<<endl;
return ;
}

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a (结果值含a不含b)。
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a (结果值含a和b)。
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1 (结果值不含a含b)。(总的来说,通用公式:a + rand() % n ;其中的a是起始值,n是整数的范围)

要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。

要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

最新文章

  1. Could not instantiate bean class [java.util.List]: Specified class is an interface] with root cause
  2. ASP.NET MVC 的自定义模型属性别名绑定
  3. navicat premium 导出表结构
  4. 为什么接口要规定成员变量必须是public static final的呢?(转)
  5. PHP加密解密函数
  6. 【解题报告】PKU 2826 An Easy Problem?!
  7. 解决sqlserver使用IP无法连接的问题,用localhost或者‘“.”可以连接
  8. 使用Xcode5开发时的icon取消高光效果
  9. YII session存储 调用login方法
  10. android 样式开发
  11. rabbitMQ教程(三) spring整合rabbitMQ代码实例
  12. C++ 仿函数/函数指针/闭包lambda
  13. Installing Windows Features without Internet
  14. js设计模式总结1
  15. C++ STL 常用排序算法
  16. 神经网络与BP神经网络
  17. Tempdb--查看tempdb使用的脚本
  18. [BZOJ4870][Shoi2017]组合数问题 dp+矩阵乘
  19. Redis学习篇(九)之生存时间
  20. 2D game engine essentials [to be continued...]

热门文章

  1. PLSQL_查询已执行SQL的绑定参数(案例)
  2. 图片_ _优化Bitmap加载图片1
  3. studio adb连接不上手机 ADB server didn&#39;t ACK
  4. 转载__Java内部类
  5. 启动mongoDB 以及常用操作命令
  6. Python标准库09 当前进程信息 (os包)
  7. DSS 搭建手机流媒体服务器
  8. ftime() 系统时间
  9. SQL查询结果增加序号列
  10. Ext 4.2 RowEditing