Как генерировать числа с линейно заданной вероятностью?
Поделите фашу функцию на площадь под ней и получите плотность вероятности, возьмите интеграл плотности (не сложно для линейной функции) и получите функцию распределения.
Постройте функцию обратную функции распределения, сгенерируйте число равномерно распределённое от 0 до 1 и вычислите значение полученной функции.
Если параметры задают вероятность дискретно (на картинке кстати у вас не дискретно а сложные нелинейные зависимости, т.е. 1 встречается почти в 50 раз реже 10, смею предположить что вам ТАК не надо) на интервалах, типа от [0-10) - 50 то решайте проблему в лоб, сначала выбирайте интервал в соответствии с вероятностями (если задаете количественно, то это сумма заданых значений - максимальное значение, а интервал значения rand - соответствующее значение для суммы до этого интервала и с ним, после выбора интервала просто делаете повторный rand так как в пределах интервала вам нужно равномерное.