有谁知道一个 C 库,它有一些标准概率函数,比如R
s 样本函数?我找到了这个:
http://www.gnu.org/software/gsl/
我想知道是否有人对此有任何经验(它的效率如何)以及是否还有其他经验。谢谢。
有谁知道一个 C 库,它有一些标准概率函数,比如R
s 样本函数?我找到了这个:
http://www.gnu.org/software/gsl/
我想知道是否有人对此有任何经验(它的效率如何)以及是否还有其他经验。谢谢。
您始终可以将 R 本身嵌入到您的 C 应用程序中。这是可行的,并且有文档记录,但有点乏味,因为 API 非常简单。
如果您对 C++ 持开放态度,多亏了RInside,它会变得容易得多。如果你可以在 R 中做到这一点:
R> set.seed(123); sample(LETTERS[1:5], 10, replace=TRUE)
[1] "B" "D" "C" "E" "E" "A" "C" "E" "C" "C"
R>
多亏了RInside ,你可以很容易地在 C++ 中做同样的事情:
edd@max:~/svn/rinside/pkg/inst/examples/standard$ cat rinside_sample12.cpp
// Simple example motivated by StackOverflow question on using sample() from C
//
// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv); // create an embedded R instance
std::string cmd = "set.seed(123); sample(LETTERS[1:5], 10, replace=TRUE)";
Rcpp::CharacterVector res = R.parseEval(cmd); // parse, eval + return result
for (int i=0; i<res.size(); i++) {
std::cout << res[i] << " ";
}
std::cout << std::endl;
exit(0);
}
edd@max:~/svn/rinside/pkg/inst/examples/standard$
并且鉴于它使用相同的 RNG 种子运行相同的代码,它也返回相同的结果:
edd@max:~/svn/rinside/pkg/inst/examples/standard$ ./rinside_sample12
B D C E E A C E C C
edd@max:~/svn/rinside/pkg/inst/examples/standard$
如果您只是将上面显示的代码放到examples/standard
现有 RInside 安装的目录中并说make
,可执行文件将被制作并与您的源文件(此处rinside_sample12
来自rinside_sample12.cpp
)具有相同的基本名称。
谷歌搜索C statistics library
,让我在 GSL 中获得了一些不错的成绩。另请参阅此 SO question以获取更多提示。但是,我认为您最好的选择是将 R 集成到您的 C 代码中。您可以通过两种方式做到这一点:
你看过元数字吗?它主要是一个统计库。开源,c#。