How can I create a random integer n
in Java, between 1
and k
with a "linear descending distribution", i.e. 1
is most likely, 2
is less likely, 3
less likely, ..., k
least likely, and the probabilities descend linearly, like this:
I know that there are dozens of threads on this topic already, and I apologize for making a new one, but I can't seem to be able to create what I need from them. I know that using import java.util.*;
, the code
Random r=new Random();
int n=r.nextInt(k)+1;
creates a random integer between 1
and k
, distributed uniformly.
GENERALIZATION: Any hints for creating an arbitrarily distributed integer, i.e. f(n)=some function
, P(n)=f(n)/(f(1)+...+f(k))
), would also be appreciated, for example:
.