c 生成指定范围随机数

概述:

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
#include
#include
using namespace std;
int main()
{
    srand((unsigned)time(NULL));
    for(int i=0;i<20;i++)
    cout<' ';
    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
#include
#include
#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<1,100)<<' ';
    }

    return 0;
}

希望对您有所帮助!

你可能感兴趣的:(c++)