gpt4 book ai didi

c++ - 如何生成n位随机数?

转载 作者:行者123 更新时间:2023-11-30 21:01:20 26 4
gpt4 key购买 nike

我正在尝试生成 n数字随机数。我可以生成一个随机数,但这里的情况是生成一个 n数字。我尝试通过将随机数存储在数组中来实现此目的,但我需要长格式而不是数组。

最佳答案

您需要做两件事:

  1. 研究如何输出给定范围内的随机数
  2. 计算出您需要什么范围才能仅获取 10 位数字

如果您想确保范围内的每个数字出现的可能性相同,则第 (1) 部分实际上有点棘手。幸运的是,C++11 中的标准库附带了一个名为 uniform_int_distribution 的工具,它可以为您执行所需的计算:

// Create and seed the random number generator
auto gen = std::mt19937{std::random_device{}()};
// Create our desired distribution
auto dist = std::uniform_int_distribution<int_type>{lower, upper};
// Get numbers
std::cout << dist(gen) << "\n";

对于第 (2) 部分,我们需要计算出 lowerupper 应该在上面。这实际上很简单:最低的 10 位数字是 1,000,000,000(十亿),最高的 10 位数字是 9,999,999,999(不到 100 亿)。我们可以将这些数字直接输入 C++

constexpr auto lower = 1'000'000'000;
constexpr auto upper = 9'999'999'999;

(请注意,您需要 C++14 编译器才能使用 ' 作为数字分隔符)。

现在还有最后一个问题:在典型的系统上,上面的 lowerupper 将是不同的类型,因为 lower 将适合intupper 不会。因此,我们需要确保我们的输出使用两种类型中较大的一个。一个好方法是使用类型别名和 decltype:

using int_type = decltype(upper);

这表示我们正在声明一个新的类型名称 int_type,它是 upper 类型的别名。

将它们放在一起,您将拥有一个例程,可以在任何使用 C++11 的系统上输出 10 位数字。

关于c++ - 如何生成n位随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35978987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com