R
サンプル関数のような標準的な確率関数を持つ C ライブラリを知っている人はいますか? 私はこれを見つけました:
http://www.gnu.org/software/gsl/
誰かがそれを経験したことがあるかどうか(それがどれほど効率的か)、他に経験があるかどうか疑問に思っていました. ありがとう。
R
サンプル関数のような標準的な確率関数を持つ C ライブラリを知っている人はいますか? 私はこれを見つけました:
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 の質問も参照してください。ただし、R を C コードに統合するのが最善の方法だと思います。これは、次の 2 つの方法で行うことができます。
メタ数値を見たことがありますか。主に統計ライブラリです。オープンソース、C#.