/* * Authored by yiwu on Oct.8.2014 * reference: * chapter 2.2 of * http://www.sciencedirect.com/science/article/pii/016794739390115A */ private ArrayList<Integer> sample_value_use_binomial() { BinomialDistribution binom = null; int cur = 0; double cdf = 0; ArrayList<Integer> result = new ArrayList<Integer>(k); for (int i = 0; i < k - 1; i++) { if (n == cur) { result.add(0); continue; } binom = new BinomialDistribution(n - cur, p[i] / (1.0 - cdf)); int x = binom.sample(); cur += x; cdf += p[i]; result.add(x); } result.add(n - cur); return result; }