21xrx.com
2024-11-05 18:32:48 Tuesday
登录
文章检索 我的文章 写文章
C++中的随机函数用法
2023-07-11 02:16:43 深夜i     --     --
C++ 随机函数 用法

C++作为一种面向对象的编程语言,在开发过程中使用随机函数可以为程序添加更多的灵活性和随机性。C++中提供了 两个头文件,可以用其中的函数产生随机数。

产生伪随机数:

使用rand函数可以产生一个0~RAND_MAX(通常是32767)之间的伪随机数,需要在使用之前调用srand函数设定随机数种子,如果不设置种子每次使用rand函数得到的数字是相同的。下面是一个简单的例子:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

 srand((unsigned int)time(NULL));

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

 {

  cout << rand() << endl;

 }

 return 0;

}

rand函数是C语言库函数,其返回值为int类型,所以上面代码中使用了int的变量来进行存储。可以看到,输出结果是十个随机数。

如果想要限制随机数的范围,可以采用“取余”方法。例如我们要生成一个1-100之间的随机数:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

 srand((unsigned int)time(NULL));

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

 {

  cout << rand()%100+1 << endl;

 }

 return 0;

}

每个产生的随机数都会对100取余然后加上1,范围就限定在了1-100内。

产生真随机数:

C++11新增了 头文件,提供了更加现代化的真随机数生成方法。可以先创建一个随机数引擎,再结合分布函数生成真随机数。下面是示例代码:


#include <iostream>

#include <random>

using namespace std;

int main()

{

 random_device rd;

 mt19937 gen(rd());

 uniform_int_distribution<> dis(1, 100);

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

 {

  cout << dis(gen) << endl;

 }

 return 0;

}

在这个示例代码中,首先使用random_device引擎生成种子,然后使用mt19937引擎作为之后的随机数生成基础。uniform_int_distribution是分布函数,用于指定随机数的范围。

总结:

使用C++中的随机函数可以产生伪随机和真随机数,可以根据需要自由使用。需要注意的是,在使用伪随机数时需要先设置随机数种子,不然每次得到的数字都是一样的。

  
  

评论区

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