C++产生随机数
0.前言
想做一个掷骰子的小游戏,需要用到随机数函数,于是查了一些资料,整理了一下。
1.随机数函数
C++产生随机数需要用到rand()和srand()函数。期中,
(1)rand()叫随机数发生器,所在头文件是<cstdlib>,可以产生随机数,例如下面这个程序就是产生10以内的随机数。
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
for (int i = 0; i < 10; i++)
{
cout << rand()%10<< " ";
}
return 0;
}
但是你运行这个程序后,你会发现它每次运行的结果是相同的,这是rand()函数的缺点,rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。
(2)srand()名为初始化随机数发生器,srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
(3)可以利用系统时钟产生不同的随机数种子。需要引入<ctime>头文件。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand((int)time(NULL));
for (int i = 0; i < 10; i++)
{
cout << rand()%10<< " ";
}
return 0;
}
2.产生某个范围内的随机数
要产生一定范围内的随机数,可以使用下面的公式:
要取得[0,n) 就是rand()%n 表示 从0到n-1的数
要取得[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是整数的范围。
下面这个程序就是产生3到10范围内的随机数
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand((int)time(NULL));
cout << (3+rand()%9)<< " ";
return 0;
}
(adsbygoogle = window.adsbygoogle || []).push({});