21xrx.com
2024-11-10 00:47:19 Sunday
登录
文章检索 我的文章 写文章
C++随机数生成
2023-07-04 13:40:44 深夜i     --     --
C++ 随机数 生成

在C++编程中,生成随机数是一项常见的任务。随机数生成的实现需要考虑多种因素,如可重复性、分布性、性能等。下文将介绍C++中生成随机数的方法。

1.使用rand函数

C++中,可以使用rand函数来生成伪随机数。rand函数返回0到RAND_MAX之间的整数,其中RAND_MAX是C++标准库定义的最大随机数值。为了使rand函数每次获取的随机数不同,我们需要在使用前调用srand函数,将一个随机数种子作为参数传入。若不调用srand函数,则程序每次运行时都会使用相同的种子,产生相同的随机数序列。

以下是一个例子:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main() {

  srand(time(NULL));

  for(int i = 0; i < 10; i++) {

    cout << rand() << endl;

  }

  return 0;

}

上述代码中,首先利用time函数获取当前时间,将其作为srand函数的种子;然后调用rand函数生成10个随机数并输出。由于每次运行程序时的时间是不同的,因此每次调用srand函数得到的种子也是不同的,可以保证每次随机数的不同。

2.C++11中的随机数库

C++11中引入了一个新的标准库 ,其中包含多种随机数生成器。这些生成器可以满足不同分布的随机数要求,并提供了更好的性能、可重复性及扩展性。

以下是一个使用C++11随机数库生成随机数的例子:


#include <iostream>

#include <random>

using namespace std;

int main() {

  random_device rd;

  mt19937 gen(rd());

  uniform_int_distribution<int> dis(1, 100);

  for(int i = 0; i < 10; i++) {

    cout << dis(gen) << endl;

  }

}

上述代码中,使用random_device生成真随机数种子,使用mt19937作为随机数生成器,使用uniform_int_distribution作为随机数分布器,指定生成的随机数范围为1到100之间的整数。调用dis(gen)则可以生成一个随机数并输出。与rand函数不同,C++11的随机数库提供了更多的自定义选项,可以用于生成不同类型、不同范围的随机数。

综上,C++中生成随机数的方法有多种。使用rand函数可以快速地生成伪随机数,但需要注意种子的使用;使用C++11随机数库则可以提供更多的自定义选项,更好地满足应用需求。在使用时应根据具体情况选择合适的方法。

  
  

评论区

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