使用 rand() 生成没有数字重复的数字

Using rand() to generate a number without digit duplicates

我们如何使用 rand() 函数自定义代码以生成一个 n 位数字,其中 n<8,其中没有数字重复? 假设我想生成一个从 1000 到 9999 的 4 位数字,这个数字不应该包含重复的数字:例如 1023 4798 等。 顺便说一句,我们可能无法概括 n.

编辑

我浏览了我收到的问题的答案。老实说,我认为生成一个没有重复数字的数字序列的问题在我看来比生成一个没有重复数字的数字更容易。仍在寻找答案。

我的代码真是一团糟,说实话,没有一次尝试解决所述问题。我有一份纸质草稿,但它仍然基于为数字中的每个数字分配一个整数变量和一个小循环,该循环检查其中一些是否相等以及 increment/decrements 其中之一。即使对我来说,这听起来也是个坏主意,但这就是我所能想到的。

您有几个明显的选择:

  1. 选择一个随机数,如果其中包含任何重复数字,请重新选择。如果 n 很高,这可能会变慢。

  2. 将数字从0到9随机打乱,取前n位。

  3. 保留剩余数字的数组。从数组中随机选择一个元素并将其从数组中删除。重复您需要的位数。

如果零不是合法的第一位数字,您将不得不解决这个问题。在每种情况下如何做到这一点应该是显而易见的。如果结果数字太低,您可以随时重新选择。