INNER CODE UNIT · C++
jj
GreenleafLab/chromVAR · src/utils.cpp:62
jj = *L;
alias_tab[ii] = jj;
prob[jj] += (prob[ii] - 1);
if (prob[jj] < 1.) L++;
if(L == L0) break; // now all prob >= 1
}
}
for (ii = 0; ii < nOrig; ii++) prob[ii] += ii;
/* generate sample */
for (ii = 0; ii < size; ii++) {
rU = unif_rand() * nOrig;
kk = (int) rU;
index[ii] = (rU < prob[kk]) ? kk : alias_tab[kk];
}
return index + 1;
}