📜  std::random_device - C++ (1)

📅  最后修改于: 2023-12-03 15:35:09.433000             🧑  作者: Mango

std::random_device - C++

std::random_device是C++的标准库函数,用于生成一个随机数种子。

用法

首先要包含随机数库的头文件:

#include <random>

然后使用std::random_device()来生成一个随机数种子:

std::random_device rd;

对于一些使用伪随机数算法的生成器,比如std::mt19937,我们需要把这个种子传入:

std::mt19937 gen(rd());

这样就可以使用生成器生成随机数了。

注意事项

std::random_device并不是一个真正的随机数生成器,它往往使用系统噪声等一些熵源来生成种子。因此,如果系统没有可以用于熵源的设备,std::random_device()生成的随机数可能是预测的或可重复的,这可能是安全漏洞的来源。

此外,不同的操作系统对熵源的处理也可能有差异,因此必须谨慎使用。

示例代码

下面是一个简单的例子,使用std::random_devicestd::uniform_int_distribution生成随机数:

#include <iostream>
#include <random>

int main() {
  std::random_device rd;
  std::mt19937 gen(rd());
  std::uniform_int_distribution<> dis(1, 6);

  for (int i = 0; i < 10; ++i) {
    std::cout << dis(gen) << ' ';
  }
  std::cout << '\n';
}

输出会随机生成类似于2 1 6 1 6 2 6 3 6 3的数字序列。