C++生成随机数
2016-01-02 11:53
218 查看
C/C++生成随机数需要用到rand()函数和srand()函数,C/C++内没有在一个范围内生成随机数的自带函数。
1.rand()函数
功能:随机发生器
所在头文件:stdlib.h
rand()返回随机数值的范围在0~RAND_MAX之间。0~RAND_MAX每个数字被选中的概率相同。
注:rand()产生的是伪随机数字,每次执行时的结果是相同的。Ctrl+Shift+F5时每次产生的结果是一样的。
2.srand()函数
为了避免每次生成固定的随机数,引进srand()函数。
功能:初始化随机数发生器
用法:srand(unsigned int seed)
所在头文件:stdlib.h
srand()是用来设置rand()产生随机数时的随机种子。参数seed必须是整数,如果每次seed都设置相同的值,rand()所产生的随机数值每次也都一样。
注:要每次生成的随机数不一样,用srand()初始化,为了方便,可以利用srand((unsigned) time(NULL))的方法,产生不同的随机种子。
3.在一定范围内生成随机数的通用公式
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
参考文章:http://blog.sina.com.cn/s/blog_79ab4be10100uzrj.html
1.rand()函数
功能:随机发生器
所在头文件:stdlib.h
rand()返回随机数值的范围在0~RAND_MAX之间。0~RAND_MAX每个数字被选中的概率相同。
注:rand()产生的是伪随机数字,每次执行时的结果是相同的。Ctrl+Shift+F5时每次产生的结果是一样的。
#include <iostream> #include"stdlib.h" using namespace std; int main() { double x; x = rand(); x = x/RAND_MAX; cout<<x<<endl; return 1; }
2.srand()函数
为了避免每次生成固定的随机数,引进srand()函数。
功能:初始化随机数发生器
用法:srand(unsigned int seed)
所在头文件:stdlib.h
srand()是用来设置rand()产生随机数时的随机种子。参数seed必须是整数,如果每次seed都设置相同的值,rand()所产生的随机数值每次也都一样。
注:要每次生成的随机数不一样,用srand()初始化,为了方便,可以利用srand((unsigned) time(NULL))的方法,产生不同的随机种子。
#include <iostream> #include <time.h> #include"stdlib.h" using namespace std; int main() { double x; srand((unsigned)time(NULL)); //srand(3) x = rand(); x = x/RAND_MAX; cout<<x<<endl; return 1; }
3.在一定范围内生成随机数的通用公式
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
参考文章:http://blog.sina.com.cn/s/blog_79ab4be10100uzrj.html
相关文章推荐
- c语言枚举类型详解
- c语言:字符串匹配的KMP算法
- C/C++中时间的类型以及操作方法技巧
- C++第11周(春)项目1 - 存储班长信息的学生类
- 排序
- c语言:全局变量和局部变量的区别:通过调用函数举例
- 基于C语言的万年历
- c语言编译时的一个问题
- C语言符号优先级
- C++表示数组长度
- C语言 宏 高级用法
- 一.OC基础之:1,OC语言的前世今生 ,2,OC语言入门,3,OC语言与C的差异,4,面向对象,5,类和对象的抽象关系,6,类的代码创建,7,类的成员组成及访问
- C语言-1.static 和 extern使用,2.文件,3.数据块读写
- C语言-1.结构体,2.枚举,3.typedef,4.预处理指令的概念,5.条件编译
- c语言和oc对比
- delete释放new[]造成的泄漏
- [c语言]EmailAddresses(for hw)
- C语言 数组长度...int length = sizeof(stu) / sizeof(stu[0]);
- 学习c++的五十条忠告
- C语言-指针