Стандартные rand() возвращают, обычно, равномерно распределенную случайную величину. Но есть формулы для преобразования их в случайные величины с другими распространенными распределениями.
Я слышал про преобразование Бокса-Мюллера, но оно переводит пару равномерных в пару нормальных. Попробуйте поискать что-то подобное для экспоненциального, например.