使用非重复随机数(在C中)

时间:2017-11-26 18:20:38

标签: c random srand

我被赋予了创建非重复数字生成器的任务,该生成器生成7个数字。我使用了rand功能。但不确定如何确保数字不重复。谢谢你的帮助

    int i, n;
    time_t t;
    n = 7;
    srand((unsigned) time(&t));

    for( i = 0 ; i < n ; i++ ) {
    printf("%d\t", rand() % 35);}

1 个答案:

答案 0 :(得分:0)

您必须将之前创建的所有随机数存储到数组中,然后您必须将数组值与新创建的随机数进行比较,无论它是否已经创建。请参阅下面的代码并试一试。

int i, n;
time_t t;
n = 7;
int randval[n]
int rval = 0;
int j = 0;
srand((unsigned) time(&t));
int found = 0;
for( i = 0 ; i < n ; ) {
  rval = rand();
  j = 0;
  found = 0;
  while(j++ < i ){
     if(rand[j] == rval){
       found = 1;
       break;
     }
  }
  if(!found){      
     randval[i] = rval;
     i++;
     printf("%d\t", rval % 35);
   }
}