[ 簡単な説明 ]
無作為抽出用の関数です。int 型データのみ準備しました。 |
pickup( ) | int 型データ用 |
/* pickup.c 無作為抽出 */ #include <stdio.h> #include "random.h" void init_pickup(void (*init)(long s), double (*rnd)(void), long seed) { init(seed); _rand = rnd; } void pickup(int m, int n, int *pick) { int i, *p; if(m < n || n < 1) { fprintf(stderr, "Error : illegal input in pickup()\n"); return; } p = pick; i = 1; do { if(_rand() < (double)n / (double)m--) { *p++ = i; n--; } i++; } while(n); } |