当前位置: 首页 > 知识库问答 >
问题:

如何生成n位随机数?[重复]

施越彬
2023-03-14

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

共有1个答案

堵才哲
2023-03-14

你需要做两件事:

    < li >解决如何输出给定范围内的随机数 < li >计算出只获得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)部分,我们需要计算出什么< code>lower和< code>upper应该在上面。这其实相当简单:最低的10位数字是1,000,000,000(十亿),最高的是9,999,999,999(少于一百亿)。我们可以把这些数字直接代入C

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

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

现在,还有最后一个问题:在典型的系统中,上下上上方将是不同的类型,因为下部将适合int,但上部将不适合。因此,我们需要确保我们的输出使用两种类型中较大的一种。执行此操作的一个好方法是使用类型别名和 decltype

using int_type = decltype(upper);

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

把这些放在一起,你就有了一个在任何使用C 11的系统上输出10位数的例程。

 类似资料:
  • 问题内容: 我不确定如何使用BigInteger类在Java中生成随机的n位整数。 问题答案: 然后您可以使用它:

  • 问题内容: 我想要一个可以生成值的伪随机序列的函数,但是该序列在每次运行时都可以重复。我想要的数据必须合理地随机分布在给定的范围内,而不必是完美的。 我想根据随机数据编写一些可以对其进行性能测试的代码。我希望每台机器上的每个测试运行的数据都相同,但是出于存储原因,我不想随测试一起运送随机数据(最终可能会变成许多兆字节)。 该模块的库似乎没有说相同的种子在任何机器上总是给出相同的序列。 编辑:如果您

  • 本文向大家介绍如何在Python中生成非重复随机数?,包括了如何在Python中生成非重复随机数?的使用技巧和注意事项,需要的朋友参考一下 接下来的程序会生成10个介于1到100之间的随机非重复整数。它会在给定的时间间隔内生成一个随机整数,如果先前未添加过该整数,则将其添加到列表中。

  • 这是我的代码: null null 因此,一般来说,我想生成一个随机数量的divs和随机的位置。 不幸的是,这篇或这篇文章对我没有帮助。太具体了。 我会非常感谢你的帮助!

  • 问题内容: 我想创建一组随机数,在Java中没有重复项。 例如,我有一个数组来存储10,000个从0到9999的随机整数。 这是我到目前为止的内容: 但是上面的代码创建重复项。如何确保随机数不重复? 问题答案: 例如:

  • 如何在1到9之间生成9个随机数,而不重复,一个接一个。它类似于:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9]{4}中。我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了6个数字,我们必须再生成3个数字,这个过程会有点慢。当范围从[1,9]更改为[1,1000]时,这种方法听起来不正确。有人能提出一个替代方法吗。