c语言怎么生成不重复的随机数

   2024-11-04 3570
核心提示:在C语言中,可以使用rand()函数生成随机数,但是要生成不重复的随机数,可以采用以下方法:使用数组存储已经生成的随机数,每次

在C语言中,可以使用rand()函数生成随机数,但是要生成不重复的随机数,可以采用以下方法:

使用数组存储已经生成的随机数,每次生成新的随机数时,先检查数组中是否已经存在该随机数,如果存在则重新生成,直到生成一个不重复的随机数。
#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {    int nums[10]; // 存储生成的随机数    int index = 0;    srand((unsigned)time(NULL)); // 初始化随机数种子    while (index < 10) {        int new_num = rand() % 100; // 生成0~99的随机数        // 检查数组中是否已经存在该随机数        int i;        int is_duplicate = 0;        for (i = 0; i < index; i++) {            if (nums[i] == new_num) {                is_duplicate = 1;                break;            }        }        if (!is_duplicate) {            nums[index] = new_num;            index++;        }    }    // 输出生成的不重复随机数    for (int i = 0; i < 10; i++) {        printf("%d ", nums[i]);    }    return 0;}
可以使用洗牌算法(Fisher–Yates shuffle)生成一个随机排列,然后取前n个元素作为不重复的随机数。
#include <stdio.h>#include <stdlib.h>#include <time.h>void shuffleArray(int arr[], int n) {    srand((unsigned)time(NULL));    for (int i = n - 1; i > 0; i--) {        int j = rand() % (i + 1);        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }}int main() {    int nums[10]; // 存储生成的随机数    for (int i = 0; i < 10; i++) {        nums[i] = i;    }    shuffleArray(nums, 10);    // 输出生成的不重复随机数    for (int i = 0; i < 10; i++) {        printf("%d ", nums[i]);    }    return 0;}

以上是两种生成不重复的随机数的方法,可以根据实际需求选择合适的方法。

 
举报打赏
 
更多>同类网点查询
推荐图文
推荐网点查询
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号