Weighted sampling with replacement in Java

Viewed 990

Is there a function in Java, or in a library such as Apache Commons Math which is equivalent to the MATLAB function randsample? More specifically, I want to find a function randSample which returns a vector of Independent and Identically Distributed random variables according to the probability distribution which I specify. For example:

int[] a = randSample(new int[]{0, 1, 2}, 5, new double[]{0.2, 0.3, 0.5})
//        { 0 w.p. 0.2
// a[i] = { 1 w.p. 0.3
//        { 2 w.p. 0.5

The output is the same as the MATLAB code randsample([0 1 2], 5, true, [0.2 0.3 0.5]) where the true means sampling with replacement.

If such a function does not exist, how do I write one?

Note: I know that a similar question has been asked on Stack Overflow but unfortunately it has not been answered.

1 Answers
Related