c++生成随机数
2018-03-23 18:42
288 查看
概述:
C++中没有自带的random函数,获取随机数可以使用rand()和srand()方法。不过,由于rand()的内部实现是用线性同余法做的,所以生成的并不是真正的随机数,而是在一定范围内可看为随机的伪随机数。rand:
rand()会返回一个0至RAND_MAX之间的随机数值,RAND_MAX的值与int位数有关,最小是32767。不过rand()是一次性的,因为系统默认的随机数种子为1,只要随机数种子不变,其生成的随机数序列就不会改变。Srand:
srand()可用来设置rand()产生随机数时的随机数种子。通过设置不同的种子,我们可以获取不同的随机数序列。一般情况我们会使用srand((unsigned int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。需要调用time(),加入头文件< ctime >。#include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { srand((unsigned)time(NULL)); for(int i=0;i<20;i++) cout<<rand()<<' '; return 0; }
获取指定范围的随机数:
获取一定范围的随机数,其实也就是对rand()得到的随机数,求余操作。取得[0,x)的随机整数:rand()%x;
取得[0,x]的随机整数:rand()%(x+1);
取得[a,b)的随机整数:rand()%(b-a)+a;
取得(a,b]的随机整数:rand()%(b-a)+a+1;
取得[a,b]的随机整数:rand()%(b-a+1)+a;
取得0-1之间的浮点数:rand()/double(RAND_MAX)。
#include<iostream> #include<cstdlib> #include<ctime> #define randomInt(a,b) (rand()%(b-a+1)+a) using namespace std; int main() { srand((unsigned)time(NULL)); for(int i=0;i<20;i++){ //求[1-100]之间的随机数 cout<<randomInt(1,100)<<' '; } return 0; }
希望对您有所帮助!
相关文章推荐
- C/C++生成高斯分布随机数
- c++生成随机数
- C++中生成随机数的几点注意事项
- C/C++随机数的生成
- 使用C++生成1-33中的6个随机数,无重复
- C/C++随机数生成 rand() srand()
- C++中生成任意范围内随机数的方法
- C++生成随机数:高斯/正态分布(gaussian/normal distribution)
- C++生成随机数:X2(卡方)分布(X2 distribution)
- C++随机数生成实例讲解
- C++随机数生成方法
- c++如何生成随机数
- C/C++ 中生成特定范围内的随机数
- c++如何生成随机数
- C++随机数生成
- 【转】C++生成随机数——生成任意范围内的等概率随机数
- C++ 随机数生成 [转]
- C++随机数--——生成任意范围内等概率随机数“足够好”的做法
- C++生成不重复的随机数
- C++生成随机数:Gamma(伽马)分布(gamma distribution)