117.info
人生若只如初见

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

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

  1. 使用数组存储已经生成的随机数,每次生成新的随机数时,先检查数组中是否已经存在该随机数,如果存在则重新生成,直到生成一个不重复的随机数。
#include 
#include 
#include 

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;
}
  1. 可以使用洗牌算法(Fisher–Yates shuffle)生成一个随机排列,然后取前n个元素作为不重复的随机数。
#include 
#include 
#include 

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;
}

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe053AzsLAQZRA1I.html

推荐文章

  • C语言如何把字符串转化为数字

    在C语言中,可以使用几个函数将字符串转换为数字类型: 使用atoi()函数将字符串转换为整数。atoi()函数接受一个字符串作为参数,并返回对应的整数值。但是需要注...

  • 如何判断c语言标识符是否合法

    在C语言中,标识符是用来命名变量、函数、结构体等实体的名称。合法的C语言标识符需要满足以下规则: 标识符只能由字母(大小写均可)、数字(0-9)和下划线(_)...

  • 使用c语言标准库要注意哪些事项

    在使用C语言标准库时,需要注意以下几点事项: 包含正确的头文件:C标准库的函数和类型定义在各个头文件中,所以在使用标准库函数之前,应该先包含相应的头文件。...

  • 如何判断c语言常量合不合法

    判断C语言常量是否合法的方法是根据C语言的语法规则进行检查。以下是一些判断常量合法性的方法: 检查常量的类型与赋值的类型是否匹配。例如,整数常量必须是合法...

  • mysql字段自增如何设置

    要设置MySQL字段自增,需要在创建表的时候在字段的定义中使用AUTO_INCREMENT关键字。例如:
    CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, nam...

  • navicat怎么查看表的主键

    在Navicat中,您可以通过以下步骤查看表的主键: 打开Navicat并连接到您的数据库。
    在左侧导航栏中选择您要查看主键的表。
    右键单击该表并选择“设计表...

  • mysql出现乱码的原因有哪些

    数据库字符集设置不正确:数据库字符集和连接字符集设置不一致会导致乱码。 数据库表字符集设置不正确:数据表字符集和字段字符集设置不正确会导致乱码。 数据库...

  • PHP调用数组的方法是什么

    在PHP中,可以使用以下几种方法来调用数组: 使用方括号([])和数组键来访问数组元素,例如:$array[‘key’]。
    使用foreach循环遍历数组中的每个元素,例...