nJava で、「線形降順分布」の間1でランダムな整数を作成するにはどうすればよいですか。k123k

このトピックにはすでに数十のスレッドがあることを知っており、新しいスレッドを作成して申し訳ありませんが、それらから必要なものを作成できないようです. 私はimport java.util.*;、コードを使用することを知っています
Random r=new Random();
int n=r.nextInt(k)+1;
1との間のランダムな整数を作成し、k一様に分散します。
一般化:任意に分散された整数 (つまりf(n)=some function, P(n)=f(n)/(f(1)+...+f(k))) を作成するためのヒントも歓迎されます。たとえば、次のようになります。
.