長さnの配列を全て0に初期化し、その後ランダムにk個の要素を1にする。
長さnの配列を全て0に初期化し、その後ランダムにk個の要素を1にする。
#include<stdlib.h> void randomSelect(int *flag, int n, int k){ int i, j, r; srand((unsigned int)time(NULL)); for(i = 0; i < n; i++){ flag[i] = 0; } for(i = n; i > n - k; i--){ r = rand() % i; for(j = 0; !(flag[j] == 0 && r == 0); j++){ if(flag[j] == 0) r--; } flag[j] = 1; } }