使用C语言生成不重复的随机数

5

我希望能够生成1到13之间不重复的随机数。我使用了这个方法,但是它不能保证没有重复。

for ( i = 0; i < 13; i++)
{
      array[i] = 1 + (rand() % 13);
}

请帮我。

C语言


10
用数字1到13填充一个数组,然后洗牌数组 - user142162
1个回答

14

正如一位评论所说,用数字1到13填充一个数组,然后对该数组进行随机排序。

int array[13];

for (int i = 0; i < 13; i++) {     // fill array
    array[i] = i;
    printf("%d,", array[i]);
}
printf("\n done with population \n");
printf("here is the final array\n");

for (int i = 0; i < 13; i++) {    // shuffle array
    int temp = array[i];
    int randomIndex = rand() % 13;

    array[i]           = array[randomIndex];
    array[randomIndex] = temp;
}


for (int i = 0; i < 13; i++) {    // print array
    printf("%d,",array[i]);
}

这里是示例输出。

0,1,2,3,4,5,6,7,8,9,10,11,12,
 done with population 
here is the final array
11,4,5,6,10,8,7,1,0,9,2,12,3,

注意:我使用的是最基本的排序方法。如果您想要更好的排序,请使用更好的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接