Как создать случайное целое число n в Java, между 1 и k с "линейным нисходящим распределением", т.е. 1, скорее всего, 2 менее вероятно, 3 менее вероятно,..., k наименее вероятно, а вероятности спускаются линейно, например:

Я знаю, что уже есть домены потоков в этой теме, и я приношу свои извинения за создание нового, но я, похоже, не могу создать то, что мне нужно от них. Я знаю, что используя import java.util.*;, код
Random r=new Random();
int n=r.nextInt(k)+1;
создает случайное целое число между 1 и k, распределенное равномерно.
GENERALIZATION: Любые подсказки для создания произвольно распределенного целого числа, то есть f(n)=some function, P(n)=f(n)/(f(1)+...+f(k))), также будут оценены, например:
.