X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Gibbs.cpp;fp=Gibbs.cpp;h=979860bda97cf07bd6e2a4f37869fa59186c7e3a;hb=1c7a81621434a852a7f7e11d61621e50ba1b7f2a;hp=5bdfb247aa2db979cc8c3b345eb50b977462a43e;hpb=86e650e9577999a7ba00ab454d1f6bf674b0ea70;p=rsem.git diff --git a/Gibbs.cpp b/Gibbs.cpp index 5bdfb24..979860b 100644 --- a/Gibbs.cpp +++ b/Gibbs.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -7,9 +6,8 @@ #include #include -#include "boost/random.hpp" - #include "utils.h" +#include "sampling.h" #include "Model.h" #include "SingleModel.h" @@ -53,9 +51,6 @@ bool quiet; vector arr; -boost::mt19937 rng(time(NULL)); -boost::uniform_01 rg(rng); - void load_data(char* reference_name, char* statName, char* imdName) { ifstream fin; string line; @@ -121,27 +116,6 @@ void load_data(char* reference_name, char* statName, char* imdName) { if (verbose) { printf("Loading Data is finished!\n"); } } -// arr should be cumulative! -// interval : [,) -// random number should be in [0, arr[len - 1]) -// If by chance arr[len - 1] == 0.0, one possibility is to sample uniformly from 0...len-1 -int sample(vector& arr, int len) { - int l, r, mid; - double prb = rg() * arr[len - 1]; - - l = 0; r = len - 1; - while (l <= r) { - mid = (l + r) / 2; - if (arr[mid] <= prb) l = mid + 1; - else r = mid - 1; - } - - if (l >= len) { printf("%d %lf %lf\n", len, arr[len - 1], prb); } - assert(l < len); - - return l; -} - void init() { int len, fr, to;