C 如何避免使用rand和srand获得重复的数字?

C 如何避免使用rand和srand获得重复的数字?,c,random,srand,C,Random,Srand,我有时会得到与下面代码相同的随机数。我怎样才能解决这个问题 intmain() { 整数[6]; srand(时间(0)); 对于(int j=1;j来说,主要问题是您的范围有点小,所以重复,虽然它们不一定常见,但它们会突然出现,足以让您烦恼 我有两个建议,第一个是增加随机数的范围 int main(无效){ int nums[6]; srand(时间(空)); 对于(int i=0;i

我有时会得到与下面代码相同的随机数。我怎样才能解决这个问题

intmain()
{
整数[6];
srand(时间(0));

对于(int j=1;j来说,主要问题是您的范围有点小,所以重复,虽然它们不一定常见,但它们会突然出现,足以让您烦恼

我有两个建议,第一个是增加随机数的范围

int main(无效){
int nums[6];
srand(时间(空));
对于(int i=0;i<6;++i){
nums[i]=rand()%100;//范围已增加
printf(“%d\n”,nums[i]);
}
}
另一种绝对确保唯一数字的方法是在添加之前检查数组是否已经包含该数字。正如您可能猜到的,根据您实现它的方式,时间复杂性将成为一个因素

int main(无效){
int nums[6];
srand(时间(空));
对于(int i=0;i<6;++i){
int temp=rand()%10;
bool exists=false;
对于(int j=0;j
顺便说一句,你在数组之外写东西,这是一张麻烦的彩票。
j=1;j
j=0;ji如果你掷骰子多次,你会得到相同数字的重复。这与你在这里所做的相同。也许你想洗牌一组数字?如果这是选择彩票号码,洗牌一个包含所有数字的数组搜索:费舍尔·耶茨在CDO中洗牌这个回答你的问题吗?