|
[ 簡単な説明 ]
無作為抽出用の関数です。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);
}
|