C 使用rand()生成无重复数字的数字

C 使用rand()生成无重复数字的数字,c,random,duplicates,digits,C,Random,Duplicates,Digits,我们如何使用rand()函数自定义代码以生成一个n位数,其中n您有几个明显的选择: 选择一个随机数,如果它包含任何重复的数字,请再次选择。如果n较高,则速度可能会变慢 将数字从0随机排列到9,然后取前n个数字 保留剩余数字的数组。从数组中随机选取一个元素并将其从数组中移除。重复所需的位数 如果零不是一个合法的第一个数字,你就必须解决这个问题。在这些情况下,如何做到这一点应该是显而易见的。如果生成的数字太低,您总是可以重新选择。我不确定重复是否合适。这是问如何防止数字重复,而不是序列中的数字。我想

我们如何使用rand()函数自定义代码以生成一个n位数,其中n您有几个明显的选择:

  • 选择一个随机数,如果它包含任何重复的数字,请再次选择。如果
    n
    较高,则速度可能会变慢

  • 将数字从0随机排列到9,然后取前n个数字

  • 保留剩余数字的数组。从数组中随机选取一个元素并将其从数组中移除。重复所需的位数


  • 如果零不是一个合法的第一个数字,你就必须解决这个问题。在这些情况下,如何做到这一点应该是显而易见的。如果生成的数字太低,您总是可以重新选择。

    我不确定重复是否合适。这是问如何防止数字重复,而不是序列中的数字。我想你可以把数字0-9洗牌,然后取前n个数字。我同意这不是同一个问题,但你试过什么?请发布你的代码,并说明失败的地方。我不是专门针对这个问题工作,我是编程新手,刚刚开始学习。我真的尽了最大努力从下到上浏览互联网,但仍然找不到合适的答案。(3)可以被认为只是(2)的一种实施策略。谢谢你的回答。虽然您说(1)需要大量的时间来编译,但它工作得很好。