如何使用Rmath.h在C中使用多项式函数

问题描述

我正试图在Rmath.h的帮助下,在C中长度为4的给定概率向量下从1,2,3,4抽取一个随机样本。我发现这行代码可以为我做到这一点。

inline void rmultinom(int n,double* prob,int k,int* rn)

例如,我可以编写它来绘制一个随机样本。

double p[4]={.1,.2,.3,.2};

rmultinom(1,p,1,int* rn)

但是,我迷失了第4个论点。在R中,rmultinom函数仅需要前三个参数。另一个问题是此函数返回什么。用1,2,3,4之一返回有什么方便的方法吗?

解决方法

这是一个简单的例子

#define MATHLIB_STANDALONE 1
#include "Rmath.h"
#include <stdio.h>

int main(int argc,char** argv) {
    int draws = 100;
    int classes = 4;
    int vals[classes];
    double probs[4] = {0.1,0.2,0.4,0.3};

    set_seed(123,456);
    rmultinom(draws,probs,classes,vals);

    for(int j=0; j < classes; j++) {
        printf("Count of class %i drawn: %i\n",j,vals[j]);
    }
    return 0;
}

在这里,我们从4个类别的跨国发行中抽取100张。我们返回一个长度为4的向量,该向量表示每个类中有多少个值。例如我有

Count of class 0 drawn: 9
Count of class 1 drawn: 14
Count of class 2 drawn: 43
Count of class 3 drawn: 34