21xrx.com
2025-06-26 21:01:12 Thursday
登录
文章检索 我的文章 写文章
如何在C++中生成随机数
2023-07-14 11:13:59 深夜i     25     0
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的随机数库,都需要通过种子值来初始化随机数生成器。若不使用种子值则每次生成的随机数都将是相同的,这将极大程度上降低生成随机数的有效性。

  
  

评论区