Какую формулу можно подобрать?
Из Ваших условий плотность распределения должна быть возрастающей, например - прямая.
Соответствующая ей функция распределения будет квадратичной.
А формула которую Вы ищете, это обратная к функции распределения, т.е. простейший случай - квадратный корень.
Генерируем равномерное число от 0 до 1, берем от него квадратный корень:
- выпало 0.90, считаем, что сгенерировали 0.94896 
- выпало 0.50, считаем, что сгенерировали 0.70711.
В общем случае, мне кажется, что Вам подойдет любая непрерывная функция с отрицательной второй производной
Еще, для линейного увеличения вероятности, выберите два случайных числа между 0 и 1 если второе меньше первого, верните первое иначе попробовать еще. Кстати в вашей задаче 1, должен выпасть с вероятностью 1, т.е кроме 1 ничего выпасть не должно. Надо все-таки, наверное, чтобы площадь оставалась равной 1 (т.е числа в районе 0 должны выпадать с вероятностью близкой к 0, а в районе 1 с вероятностью близкой к 0.5).
float montecarlo() {
    while (true) {
        float r1 = random(1);
        float probability = r1;
        float r2 = random(1);
        if (r2 < probability) {
           return r1;
        }
    }
}
natureofcode.com/book/introduction