C++生成随机数


      C/C++生成随机数需要用到rand()函数和srand()函数,C/C++内没有在一个范围内生成随机数的自带函数。

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM