21xrx.com
2024-12-22 21:39:09 Sunday
登录
文章检索 我的文章 写文章
C++如何生成随机数?
2023-07-12 06:52:59 深夜i     --     --
C++ 随机数 生成 伪随机数 随机数库

C++是一门非常常用的编程语言,随机数是在程序编写过程中经常需要使用的。那么在C++中,如何生成随机数呢?下面就让我们来详细了解一下。

在C++中,生成随机数的方法通常有两种:使用rand()函数和使用随机数生成器。下面我们对这两种方式进行分别介绍。

一、使用rand()函数生成随机数

rand()是C++内置的随机数生成函数,通过使用该函数进行随机数的生成需要引用头文件 。在使用rand()生成随机数时,需要注意以下几点:

① 使用srand()函数可以设置随机数生成器的种子,保证每一次程序运行生成的随机数都不同。

② 需要使用%运算符将生成的随机数控制在一定范围内。

③ 生成的随机数不是真正意义上的随机数,而是一种准随机的伪随机数。

下面是使用rand()函数生成随机数的一个简单示例:


#include <iostream>

#include <cstdlib>

using namespace std;

int main()

{

  int m = 100, n = 10;

  srand(time(NULL)); //设置随机数种子

  for(int i = 0; i < n; i++)

  {

    int r = rand() % m; //控制随机数范围在[0, 99]之间

    cout << r << " ";

  }

  cout << endl;

  return 0;

}

上述代码中,程序首先使用srand()函数设置随机数种子,这里采用当前时间作为种子,保证每次程序运行生成的随机数都不同。接着循环生成10个随机数,每个随机数的取值范围是[0, 99]之间,最后输出这10个随机数。

二、使用随机数生成器生成随机数

除了使用rand()函数生成随机数之外,C++还可以使用随机数生成器生成随机数。随机数生成器是一种基于随机数种子生成随机数序列的算法,其生成的数列具有良好的随机性,是真正意义上的随机数。

在C++11标准之后,引入了一个新的随机数生成库 ` `,该库提供了多种随机数生成器,使用方式与rand()函数略有不同,需要多些一些代码。下面是一个使用随机数生成器生成随机数的简单示例:


#include <iostream>

#include <random>

using namespace std;

int main()

{

  int m = 100, n = 10;

  default_random_engine e(time(NULL)); //创建随机数生成器

  uniform_int_distribution<int> u(0, m-1); //创建随机数分布对象

  for(int i = 0; i < n; i++)

  {

    int r = u(e); //随机生成[0, 99]之间的整数

    cout << r << " ";

  }

  cout << endl;

  return 0;

}

上述代码中,程序首先使用default_random_engine类创建了一个随机数生成器e,使用当前时间作为种子。接着使用uniform_int_distribution类创建了一个随机数分布对象u,该对象可以控制随机数的范围。最后循环生成10个随机数,每个随机数的取值范围是[0, 99]之间,最后输出这10个随机数。

总结

到这里,我们对C++中生成随机数的两种方式都进行了介绍。使用rand()函数是最常用的方法,但其生成的随机数并不是真正意义上的随机数。而使用随机数生成器生成随机数则可以获得真正意义上的随机数序列。在实际编程中,应根据需求选择适合的方法进行随机数的生成。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复