21xrx.com
2024-11-22 00:42:22 Friday
登录
文章检索 我的文章 写文章
如何在C++中生成随机数
2023-07-14 11:13:59 深夜i     --     --
C++ 随机数 生成 rand()函数 srand()函数

在C++中,生成随机数是一项重要的任务。这些随机数能够用于各种场景,如游戏、模拟、密码学等。那么,究竟该如何在C++中生成随机数呢?本文将为您介绍一些常用的生成随机数的方法。

1. 使用srand()和rand()函数

srand()函数是seed random的缩写,它通过接收一个种子值来初始化随机数生成器。而rand()函数则可以用于生成随机值。这两个函数在头文件stdlib.h中定义。

如下是示例代码:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  srand(time(NULL)); //用当前时间作为种子值

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

    cout << rand() << endl; //输出随机值

  }

  return 0;

}

2. 使用C++11的随机数库

C++11引入了随机数库,为我们提供了更加专业和灵活的随机数功能。这个新库包括了多个生成随机数的工具类,比如random_device,uniform_int_distribution等。其中random_device是一个硬件产生的随机数生成器,uniform_int_distribution用于生成指定区间内的整数。

如下是示例代码:


#include <iostream>

#include <random>

using namespace std;

int main()

{

  random_device rd; //获得真正的硬件随机数种子

  mt19937 gen(rd()); //使用mt19937生成器和真正的种子初始化

  uniform_int_distribution<> dist(1, 100); //指定随机数的范围为1到100

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

    cout << dist(gen) << endl; //输出随机数

  }

  return 0;

}

以上就是在C++中生成随机数的两种方法。可以根据自己的需要选择任意一种。无论是使用srand()和rand()函数还是C++11的随机数库,都需要通过种子值来初始化随机数生成器。若不使用种子值则每次生成的随机数都将是相同的,这将极大程度上降低生成随机数的有效性。

  
  

评论区

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