'Triangular Distribution Random Variables

First some background on my situation:

I need a random triangular distribution and was planning on using Python's random.triangular. The following is the source code (Python 3.6.2):

    def triangular(self, low=0.0, high=1.0, mode=None):
    """Triangular distribution.

    Continuous distribution bounded by given lower and upper limits,
    and having a given mode value in-between.

    http://en.wikipedia.org/wiki/Triangular_distribution

    """
    u = self.random()
    try:
        c = 0.5 if mode is None else (mode - low) / (high - low)
    except ZeroDivisionError:
        return low
    if u > c:
        u = 1.0 - u
        c = 1.0 - c
        low, high = high, low
    return low + (high - low) * (u * c) ** 0.5

I reviewed the referenced wiki page and found that my desired use had a special case which simplifies things, and can be implemented with the following function:

def random_absolute_difference():
    return abs(random.random() - random.random())

Doing some quick timings reveals a significant speedup with the simplified version (this operation will be repeated far more than a million times each time my code runs):

>>> import timeit
>>> timeit.Timer('random.triangular(mode=0)','import random').timeit()
0.5533245000001443
>>> timeit.Timer('abs(random.random()-random.random())','import random').timeit()
0.16867640000009487

So now for the question: I know python's random module only uses pseudo-randomness, and random.triangular uses one random number while the special case code uses 2 random numbers. Will the special case results be significantly less random because they use 2 consecutive calls to random, while random.triangular only uses one? Are there any other unforeseen side effects of using the simplified code?

Edit: In reference to this solution to a different question, I created histogram plots for both distributions, showing that they are comparable:

Random triangular distribution: Random Triangular Distribution

Special case simplified distribution: Special Case Simplified Distribution



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source