image

编辑人: 长安花落尽

calendar2025-06-04

message4

visits682

如何优雅的从一个数组中随机抽取N个元素?

/**
     * 随机生成一个[0, n-1]的数
     */
    int rand_index(int n) {
        srand(time(NULL));
        return rand() % n;
    }
    /**
     * 问题描述:从数组array中随机抽取extract_num个元素,组成新的数组返回。
     *
     */
    int* random_extract(int array[], int array_num, int extract_num) {

        int* result = (int*)malloc(extract_num * sizeof(int));

        for (int i = 0; i < extract_num; ++i) {
            int tmp = array[array_num - 1 - i];
            int index = rand_index(array_num - 1 - i);
            array[array_num - 1 - i] = array[index];
            array[index] = tmp;
            result[i] = tmp;
        }

        return result;
    }

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:如何优雅的从一个数组中随机抽取N个元素?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share