设计洗牌算法c/c++

有一个大小为n的数组,设计算法随机的从里面选择k个数。(假设randint(a,b)是从闭区间[a,b]选择一个整数)。

要求:c/c++,使用洗牌算法

如下:


#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    int a[1000];
    int b[1000];
    int i, j,k, n;
    srand((unsigned int)time(0)); //随机数种子
    cout << "请输入n:"; 
    cin >> n;
    cout << "请输入" << n << "个数:";
    for (i = 0; i < n; i++)
        cin >> a[i];
    cout << "请输入k:";
    cin >> k;
    //从n个数中抽取k个
    for (i = 0, j = 0; i < k; i++)
    {
        int index = rand() % n;//生成0-n-1的随机数
        b[j++] = a[index];
    }
    //输出随机抽取的k个数
    for (i = 0; i < k; i++)
        cout << b[i] << " ";
    return 0;
}