C++学习笔记(五)数学运算,生成随机数

C++ 内置了丰富的数学函数,可对各种数字进行运算。下表列出了 C++ 中一些有用的内置的数学函数。

为了利用这些函数,您需要引用数学头文件 。

函数 描述
double cos(double); 求余弦
double sin(double); 求正弦
double tan(double); 求正切
double log(double); 求对数
double pow(double x, double y); 返回 x 的 y 次方
double hypot(double, double); 返回两个参数的平方总和的平方根
double sqrt(double); 求平方根
int abs(int); 求整数绝对值
double fabs(double); 求浮点数绝对值
double floor(double); 返回小于或等于该参数的最大整数

随机数

在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。

#include 
#include 
#include 
 
using namespace std;
 
int main ()
{
   int i,j;
 
   // 设置种子
   srand( (unsigned)time( NULL ) );
 
   /* 生成 10 个随机数 */
   for( i = 0; i < 10; i++ )
   {
      // 生成实际的随机数
      j= rand();
      cout <<"随机数: " << j << endl;
   }
 
   return 0;
}

运行结果:
C++学习笔记(五)数学运算,生成随机数_第1张图片

  • rand()产生的是伪随机数,每次执行的结果是相同的。即上面的程序每次运行结果都一样。
    srand(unsigned int seed); //用来设置rand()产生随机数时的随机种子,参数seed必须是整数,如果每次seed设置都相同,rand()产生的随机数同样也相同

产生指定范围内的随机数

通用公式:a+rand() % n;
其中:a为范围起始位置,n为整数的范围
产生[a,b]的随机数,可以使用 a+(int)b*rand()/(RAND_MAX+1);

#include 
#include 
#include 
using namespace std;

int main()
{
    cout <<"RAND_MAX:"<< RAND_MAX << endl;
    srand((unsigned)time(NULL));
    for (int i = 0; i < 5; i++)
        cout << (rand()%2)<<" ";         //生成[0,1]范围内的随机数
    cout << endl;
    for (int i = 0; i < 5; i++)
        cout << (rand() % 5 + 3) << " "; //生成[3,7]范围内的随机数
    cout << endl;
    return 0;
}

运行结果:
C++学习笔记(五)数学运算,生成随机数_第2张图片

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